pymysql模块
pip3 install pymysql
pymysql使用流程
1. 建立数据库连接 (db = pymysql.connect(…))
2. 创建游标对象 (cur = db.cursor() )
3. 游标方法: cur.execute("insert … ")
4. 提交到数据库或者获取数据 :
修改更新提交 db.commit()
获取数据 cur.fetchall()
5. 关闭游标对象: cur.close()
6. 断开数据库连接: db.close()
常用函数 :
db = pymysql.connect(参数列表)
功能:链接数据库
host:主机地址
port: 端口号,默认3306
user:用户名
password: 密码
database:库
chartset:编码方式,推荐使用utf8
cur = db.cursor()
功能:创建游标
返回值:返回游标对象,用于执行具体sql命令
cur.execute(sql,list_)
功能:执行SQL命令
参数:sql sql语句
list_ 列表,用于给sql语句传递参数
cur.executemany(sql命令,list_)
功能:多次执行sql命令,执行次数由列表中元组数量决定
参数:sql sql语句
list_ 列表中包含元组 每个元组用于给sql语句传递参量,一般用于写操作
cur.fetchone() 获取查询结果集的第一条数据,查找到返回一个元组否则返回None
cur.fetchmany(n) 获取前n条查找到的记录,返回结果为元组嵌套元组,(记录1)(记录2)
cur.fetchall() 获取所有查找到的记录,返回结果形式如上
cur.close() 关闭游标
db.commit() 提交到数据库执行
db.rollback() 回滚,用于当前commit() 出现是回复到原来的数据形态
db.close() 关闭连接
例 :
连接数据库(连接自己计算机可以不写host port)
db =pymysql.connect(host = "localhost",
port = 3306,
user = "root",
password = "123456",
database = "stu",
charset = "utf8"
)
#创建游标(游标对象负责调用执行sql语句,操作数据,得到结果 )
cur = db.cursor()
#对数据库操作 (增删改查)
sql = “select name,age,score from cls”
cur.execute(sql) #执行
#利用execute 参数列表解决 (单条)
sql ="select name ,age,score from cls where name = "%s" or score>"%s";"
cur.execute(sql,[name,80]) #执行sql,列表不能传递关键字,符号,表格
sql = "insert into cls values(5,"EVA","18","2","w");"
cur.execute(sql)
sql = "update hobby set price = "%s" where name = "%s";"
cur.execute(sql,[8800,"Joy"])
sql = "delete from cls where name ="%s";"
cur.execute(sql,["Lily"])
cur.commit() #如果插入数据需要提交commit,将sql语句的操作行为提交写入到数据库
#插入多条记录
l = [(“DAT”,16,“m”,77),(“Bety”,18,“m”,80),(“gona”,17,“w”,90),(“jona”,15,“w”,80)]
sql = “insert into cls (name,age,sex,score) values (%s,%s,%s,%s)”
cur.executemany(sql,l)
db.commit()
#cur 在查询后可以迭代取值
for row in cur:
print(row)
#获取一条记录
# row = cur.fetchone()
#print(row)
#多个结果
# row = cur.fetchmany(2)
#print(row)
#所有结果 没有结果返回()
#row = cur.fetchmany(2)
#插入图片
with open(“pyt.jpg”,“rb”) as f;
data = f.read() #字节串
sql =“update cls set images =”%s" where id = 2;"
cur.execute(sql,[data])
db.commit()
#提取图片
sql =“select image from cls where id = 2;”
cur.execute(sql)
data = cur.fetchone() #(image,) 是个元组
with open(“sg.jpg”,“wb”) as f:
f.write(data[0])
except Exception as e:
print (e)
#注意如果不支持事务的引擎,执行一条语句就会直接写入到数据内
#这样就不能回滚了,但是支持事务的引擎,则可以回滚,因为数据会保留在
db.rollback() #没有提交到数据库的内容,全部失效
#关闭游标和数据库
cur.close()
db.close()