# 获取游标,pymysql.cursors.DictCursor 返回字典类型
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)# 执行语句try:# 生成sql
sql ="SELECT user,pwd FROM User WHERE user='%s' AND pwd='%s'"%('name','psd')
cursor.execute(sql)# 得到所有结果
data = cursor.fetchall()# 得到一个结果
data = cursor.fetchone()# 每次得到一个
data = cursor.fetchmany()# 获取执行语句
sql = cursor.mogrify(sql,['name','psd'])
sql = cursor.query #最后一次执行语句# 提交
conn.commit();except Exception as e:import traceback
traceback.print_exc()
conn.rollback()# 事务回滚print('事务处理失败', e)finally:
cursor.close()
conn.close()
防止sql注入
# 1. 自动转义 防止sql注入
sql ="SELECT user,pwd FROM User WHERE user='%s' AND pwd='%s'"
cursor.execute(sql,['name','psd'])# 2. 调用存储过程 call proc_name('name','password')
cursor.callproc('proc_name', args=('name','password'))
2. 连接池 PooledDB
import pymysql
from DBUtils.PooledDB import PooledDB
cur = pymysql.cursors.DictCursor
pool = PooledDB(pymysql,5,#最少连接数
host='192.168.110.129',
user='admin',
passwd='123456',
db='lu_dashboard',
port=3306,
setsession=['SET AUTOCOMMIT = 1']#setsession=['SET AUTOCOMMIT = 1']是用来设置线程池是否打开自动更新的配置,0为False,1为True)defgetConn():
conn = pool.connection()# 以后每次需要数据库连接就是用connection()函数获取连接就好了return conn