操作步骤
要想使用python操作数据库的话,需要用到pymysql这个第三方包.
如果没有安装这个包,可以使用 pip3 install pymysql 命令来安装
下面来介绍pymysql使用方法
- 导入pymysql包
- 连接数据库
- 获取数据库游标
- 使用数据库游标执行sql语句
- 获取执行结果或者提交执行结果
- 关闭数据库
步骤解析
- 导入pymysql包
import pymysql
- 连接数据库(实例化)
db=pymysql.connet(host=host,user=user,password=password,port=port,db=db)
传入的关键参数解释:
host:数据库的ip(str类型)
user:数据库的用户名(str类型)
password:数据库的密码(str类型)
port:数据库的端口(int类型)
db:需要操作的数据库(str类型)
注:关键参数可以不按照上面的顺序传
- 获取数据库游标
cursor=db.cursor()
- 使用游标执行sql语句
cursor.execute(sql)
- 获取执行结果
获取执行结果针对的是数据库的查操作
res=cursor.fetchall() # 获取所有结果
res=cursor.fetchone() # 获取一条结果
res=cursor.fetchmany(n) # 获取n条结果
count=cursor.rowcount # 获取执行结果的条数
res的数据类型为元祖
- 提交执行结果
对于增删改的操作,如果我们仅仅只是使用游标执行sql语句,那么数据库对象不会进行任何改变,这是因为我们没有进行提交,数据库就没有变化.所以我们做了增删改的操作之后,需要进行提交,如下:
db.commit()
- 关闭数据库
db.close()
例子
数据库的查操作
操作的数据库:data_test
操作的表:repetition_data
先看下repetition_data表的数据有哪些,如下图所示:
从上图可知repetition_data表总共有8条记录
下面我们用python来执行 select* from repetition_data这条语句
import pymysql
host='localhost'
user='root'
password='li@o0121'
port=3306
db='data_test'
sql=""" SELECT * from repetition_data """
db=pymysql.connect(host=host,user=user,password=password,port=port,db=db)
cursor=db.cursor()
cursor.execute(sql)
res=cursor.fetchall() # 获取所有执行结果
count=cursor.rowcount
print(res)
print("查询结果的条数:{}".format(count))
db.close()
执行结果如下:
((3, 10, 'lgx'), (4, 10, 'lgx'), (5, 10, 'lgx'), (6, 10, 'lgx'), (7, 10, 'lgx'), (8, 10, 'lgx'), (9, 10, 'lgx'), (10, 10, 'lgx'))
查询结果的条数:8
从结果可以看到,查询返回的结果为元组,rowcount()可以获取查询结果的条数.至于fetchone()和fetchmany()就不演示了.
数据库的增改删操作
把repetition_data表中id=6的name字段的值改为csdn
先看看没改之前的字段值
import pymysql
host='localhost'
user='root'
password='li@o0121'
port=3306
db='data_test'
sql=""" update repetition_data set name="csdn" where id=6; """
db=pymysql.connect(host=host,user=user,password=password,port=port,db=db)
cursor=db.cursor()
cursor.execute(sql)
#db.commit() # 先不进行提交
db.close()
执行sql之后,不提交,查询数据库结果如下:
发现name的值并没有更新.
下面db.commit()之后的结果
name的值已经改变,同理,进行增删操作的时候要记得db.commit()