- pymysql
1、pymysql
1.1 安装
pip3 install pymysql
1.2 基本使用
"""
1、获得游标时可以设置cursor参数,默认以元祖的形式返回结果,cursor=pymysql.cursors.DictCursor以字典的形式返回
2、需要拼接的语句先使用%s占位(拼接的部位为条件和值),将需要拼接的参数以元组的形式传给execute,execute函数会自动拼接
3、executemany可以执行多次,需要拼接的参数以列表里加元组的形式传给executemany,executemany会依次从列表里取值执行sql语句
4、一般步骤:connect(建立连接)-cursor(获得游标)-execute(执行语句)-fetchall(查询结果)-close(关闭所有)
"""
import pymysql # 导入模块
# 建立连接
conn = pymysql.connect( # 建立连接,获得连接对象
host='127.0.0.1', # 服务器地址(必须参数:字符串)
port=3306, # 端口号(必须参数:整型)
user='root', # 用户名(必须参数:字符串)
password='123', # 密码(必须参数:字符串)
database='db1', # 数据库的名字(必选参数:字符串)
autocommit=True, # 自动提交(可选参数,Ture为开启,Fasle为关闭,关闭的情况下需要手动提交)
charset='utf8' # 编码(可选参数:编码)
)
# 获得游标
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 获得游标对象
# 执行语句
sql = 'select * from t1' # 纯sql语句
sql1 = "select * from t1 where id < %s and id>%s" # 需要拼接的sql查询语句,需要拼接的地方使用%s占位
sql2 = "insert into user(username,password) values(%s,%s)" # 需要拼接的sql插入语句,需要拼接的地方使用%s占位
rows1=cursor.execute(sql) # 纯sql语句直接传值
rows2 = cursor.execute(sql1, (3, 1)) # 执行同条sql语句一次
rows2 = cursor.executemany(sql1, [('a','1'),('b','2')]) # 执行同条sql语句多次,传入不同的值(插入多组数据)
# 查看结果
res1 = cursor.fetchone() # 查看一条返回的数据
cursor.scroll(1,mode='relative') # 滚动游标:相对位置移动
res2 = cursor.fetchmany(3) # 查看多条条返回的数据,超过最大显示最大
cursor.scroll(0,mode='absolute') # 滚动游标:绝对位置移动
res3 = cursor.fetchall() # 查看全部返回的数据
# 关闭所有
conn.commit() # 手动提交(增删改的时候,开启自动提交可以不写,未开启一定得写)
cursor.close() # 关闭游标
conn.close() # 关闭连接
1.3 调用存储过程(MySQL里的函数)
调用并传参
"""
callproc(procname, args=())
procname: 存储过程名
args:参数,以元祖的形式传参,无需区分mysql的参数类型
内部将参数转换成f"@_{procname}_%d=%s"
"""
cursor.callproc('p1', args=(1, 2, 3)) # 执行存储过程
cursor.fetchall() # 查看执行结果
# 执行原始sql指令
sql = "select @_p1_0,@_p1_1,@_p1_2"
cursor.execute(sql)
cursor.fetchall()