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的插入数据基本就到这里了,大家可以下来多加练习!

posted @ 2018-08-05 12:22  IT测试老兵  阅读(225)  评论(0编辑  收藏  举报
作者:测试老兵
出处:https://www.cnblogs.com/fighter007/
本文版权归作者和博客园共有,欢迎转载,但未经作者同意必须保留此段声明,且在文章页面明显位置给出原文连接,否则保留追究法律责任的权利。