python操作mysql数据库系列-操作MySql数据库(三)
接着上一篇的内容继续来讲!
我们本篇文章主要是讲解如何向myql插入数据。首先我们要开启mysql的服务,然后里面创建一个测试的表,ok,我们继续来干!
PS C:\Windows\system32> PS C:\Windows\system32> cd D:\application\mysql\ PS D:\application\mysql> cd bin PS D:\application\mysql\bin> net start mysql 请求的服务已经启动。 请键入 NET HELPMSG 2182 以获得更多的帮助。 PS D:\application\mysql\bin>
启动完成后,我们先登录mysql数据库,然后需要在mysql数据库中创建一个表,我们继续来看下一步:
登录mysql数据库:
PS D:\application\mysql\bin> mysql -h localhost -u root -p Enter password: ******** Welcome to the MySQL monitor. Commands end with ; or \g. Your MySQL connection id is 15 Server version: 5.7.23 MySQL Community Server (GPL) Copyright (c) 2000, 2018, Oracle and/or its affiliates. All rights reserved. Oracle is a registered trademark of Oracle Corporation and/or its affiliates. Other names may be trademarks of their respective owners. Type 'help;' or '\h' for help. Type '\c' to clear the current input statement. mysql>
登录成功后,我们继续创建一个表,首先我们进到任何一个库,比如ruifeng库,然后进去创建一个表,
mysql> show databases; +--------------------+ | Database | +--------------------+ | information_schema | | bjpowernode | | mysql | | performance_schema | | ruifeng | | sys | +--------------------+ 6 rows in set (0.00 sec) mysql> use ruifeng Database changed mysql> show tables; Empty set (0.00 sec) mysql> mysql> mysql> create table user( -> id int , -> username varchar(20), -> passsword varchar(20), -> nick varchar(20) -> ); Query OK, 0 rows affected (0.26 sec)
我们查看一下这个表中有哪些字段:desc user;
mysql> desc user; +-----------+-------------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-----------+-------------+------+-----+---------+-------+ | id | int(11) | YES | | NULL | | | username | varchar(20) | YES | | NULL | | | passsword | varchar(20) | YES | | NULL | | | nick | varchar(20) | YES | | NULL | | +-----------+-------------+------+-----+---------+-------+ 4 rows in set (0.01 sec)
目前我们的user表中没有数据,我们来查看一下:
mysql> select * from user; Empty set (0.00 sec) mysql>
接下来我们写一下插入mysql的代码,首先我们对连接mysql数据库的方法进行一个封装,方便我们其他代码调用:
def conn():
'''连接mysql'''
try:
per = Helper()
con = MySQLdb.connect(
host=per.getConfig()[0],
user=per.getConfig()[1],
passwd=per.getConfig()[2],
db='ruifeng')
return con
except Exception as e:
raise ('连接mysql失败!')
注意:db:一定要是你测试的数据库的名字,不要瞎写! ok,封装完成后,我们接下来写一下关于插入mysql数据的代码:
def insert(): '''插入单条数据''' con=conn() # print (dir(con)) #创建游标 cur = con.cursor() sql= "INSERT INTO USER VALUES (%s,%s,%s,%s)" params=(1,'fighter','admin','sanpang') cur.execute(sql,params) #执行语句 con.commit() #一定要执行 cur.close() #关闭游标连接池 con.close() #关闭数据库连接池
注意:execute方法一定是con来执行,游标连接池是con关闭,数据库连接池是con关闭。一定要commit,不然不生效。执行完以后,我们去mysql数据库中,查看一下插入的对应的数据:
mysql> select * from user; +------+----------+-----------+---------+ | id | username | passsword | nick | +------+----------+-----------+---------+ | 1 | fighter | admin | sanpang | +------+----------+-----------+---------+ 1 row in set (0.00 sec) mysql>
查看结果:
如果没有commit我们的结果会怎么样?这个大家可以自己去试试,数据一定不会被提交的。
但是现实生活中,我们一般不会单独插入数据,一般都是批量的插入数据,插入多条数据如何操作?继续看代码:插入多条数据的方法是executemany()方法。
def insertMany(): '''插入N条数据''' con=conn() # print (dir(con)) #创建游标 cur = con.cursor() sql= "INSERT INTO USER VALUES (%s,%s,%s,%s)" params=[(2,'fighter01','admin','sanpang'), (3,'fighter02','admin','sanpang')] cur.executemany(sql,params) #执行语句 con.commit() #一定要执行 cur.close() #关闭游标连接池 con.close() #关闭数据库连接池 insertMany()
多条数据实验列表进行传递,其他的方法不变。执行完成后,我们查看一下数据库中的数据有没有被插入进去?
mysql> select * from user;
查看结果如下:
ok,mysql的插入数据基本就到这里了,大家可以下来多加练习!
将喜欢的一切留在身边,这便是努力的意义。