一、Python安装MySQL连接驱动器
pip install pymysql
二、pymysql操作说明
前言:
Python所有的数据库接口程序都在一定程度上遵守 Python DB-API 规范。DB-API定义了一系列必须的对象和数据库存取方式,以便为各种底层数据库系统和多种多样的数据库接口程序提供一致的访问接口。由于DB-API 为不同的数据库提供了一致的访问接口, 在不同的数据库之间移植代码成为一件轻松的事情。
1、导入pymysql模块
import pymysql
2、创建连接对象
conn = pymysql.connect(参数列表)
参数说明:
host: 数据库主机名.默认是用本地主机(localhost)
user: 数据库登陆名.默认是当前用户
passwd: 数据库登陆的秘密.默认为空
db: 要使用的数据库名.没有默认值
port: MySQL服务使用的TCP端口.默认是3306
charset: 数据库编码,推荐UTF-8
连接connect对象
close():关闭此connect对象, 关闭后无法再进行操作,除非再次创建连接
commit():提交当前事务,如果是支持事务的数据库执行增删改后没有commit则数据库默认回滚
rollback():取消当前事务
cursor():创建游标对象
返回对象操作
conn.close() 关闭连接
conn.commit() 提交连接
conn.rollback() (撤销数据)回滚事务
3、获取游标对象
获取游标对象目标识执行SQL语句,对增删改查(curd)操作
cur = conn.cursor()
游标对象属性和方法
1)常用方法
close():关闭此游标对象
fetchone():得到结果集中的一条数据,返回一个元祖(1,“李四”)
fetchmany([size=cursor.arraysize]):得到结果集的下几行
fetchall():得到结果集中所有数据,返回一个元祖((1,“李四”),(2,“王四”))
excute(sql[,args]):使用游标执行SQL语句,执行一个数据库查询或命令
excutemany(sql,args):执行多个数据库查询或命令
2)常用属性:
connection:创建此游标对象的数据库连接
arraysize:使用fetchmany()方法一次取出多少条记录,默认为1
lastrowid:相当于PHP的last_inset_id()
3)其他方法:
iter():创建一个可迭代对象(可选)
next():获取结果集的下一行(如果支持迭代的话)
nextset():移到下一个结果集(如果支持的话)
callproc(func[,args]):调用一个存储过程
setinputsizes(sizes):设置输入最大值(必须有,但具体实现是可选的)
setoutputsizes(sizes[,col]):设置大列 fetch 的最大缓冲区大小
4)其他属性:
description:返回游标活动状态(包含7个元素的元组):(name,type_code,display_size,internal_size,precision,scale,null_ok)只有 name 和 type_cose 是必需的
rowcount:最近一次 execute()创建或影响的行数
messages:游标执行后数据库返回的信息元组(可选)
rownumber:当前结果集中游标所在行的索引(起始行号为 0)
4、查询一条数据
fetchone():得到结果集中的一条数据,返回一个元祖(1,“李四”)
# 1. 导入pymysql模块 import pymysql # 2. 创建连接对象 # host:连接的mysql主机,如果本机是’localhost’ # port:连接的mysql主机的端口,默认是3306 # database:数据库的名称 # user:连接的用户名 # password:连接的密码 # charset:通信采用的编码方式,推荐使用utf8 conn = pymysql.connect(host="localhost", port=3306, user="root", password="*****", database="python41", charset="utf8" ) # 3.获取游标,目的就是要执行sql语句 cursor = conn.cursor() # 准备sql,之前在mysql客户端如何编 写sql,在python程序里面还怎么编写 sql = "select * from students;" # 4. 执行sql语句 cursor.execute(sql) # 获取查询结果,返回的数据类型是一个元组:(1,张三) row = cursor.fetchone() print(row) # 5.关闭游标 cursor.close() # 6.关闭连接 conn.close()
5、查询多条数据
fetchall():得到结果集中所有数据,返回一个元祖((1,“李四”),(2,“王四”))
# 1. 导入pymysql模块 import pymysql # 2. 创建连接对象 # host:连接的mysql主机,如果本机是’localhost’ # port:连接的mysql主机的端口,默认是3306 # database:数据库的名称 # user:连接的用户名 # password:连接的密码 # charset:通信采用的编码方式,推荐使用utf8 conn = pymysql.connect(host="localhost", port=3306, user="root", password="****", database="python41", charset="utf8" ) # 3.获取游标,目的就是要执行sql语句 cursor = conn.cursor() # 准备sql,之前在mysql客户端如何编 写sql,在python程序里面还怎么编写 sql = "select * from students;" # 4. 执行sql语句 cursor.execute(sql) # 获取查询结果,返回的数据类型是一个元组:((1,'张三'),(2,'李四")) rows = cursor.fetchall() for row in rows: print(row) # (1, '张三') # (2, '李四") # 5.关闭游标 cursor.close() # 6.关闭连接 conn.close()
6、对数据进行增删改操作
conn.commit() 提交连接
conn.rollback() (撤销数据)回滚事务
# 1. 导入pymysql模块 import pymysql # 2. 创建连接对象 # host:连接的mysql主机,如果本机是’localhost’ # port:连接的mysql主机的端口,默认是3306 # database:数据库的名称 # user:连接的用户名 # password:连接的密码 # charset:通信采用的编码方式,推荐使用utf8 conn = pymysql.connect(host="localhost", port=3306, user="root", password="****", database="python41", charset="utf8" ) # 3.获取游标,目的就是要执行sql语句 cursor = conn.cursor() # 增加操作 sql = "insert into classes(name) values('小明)" # 修改操作 # sql = "update classes set name = '小红' where id = 2" # 删除操作 # sql = "delete from classes where id=2" try: # 4. 执行sql语句 cursor.execute(sql) # 增删改都必须提交数据 conn.commit() except: # 如果报错就对修改的数据进行撤销,表示数据回滚 conn.rollback() # 5.关闭游标 cursor.close() # 6.关闭连接 conn.close()