PYMSQL操作指南
一.安装
pip3 install PyMySQL
二.连接查询数据库
import pymysql
# 连接数据库
conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='root', db='mydb', charset='utf8')
print(conn)
# 创建游标
cursor = conn.cursor()
# sql语句,已知数据库存在student表
sql = 'select * from student;'
# 执行sql语句,查询成功则返回查询记录数
records = cursor.execute(sql)
print(records)
# 关闭连接,游标和连接都要关闭
cursor.close()
conn.close()
三.增、删、改:conn.commit(),这些操作后一定要提交
-
下列操作通用代码
import pymysql # 连接数据库 conn = pymysql.connect( host='localhost', port=3306, user='root', password='root', db='mydb', charset='utf8') # 创建游标 cursor = conn.cursor() # 增删查改一定要提交,否则操作无效 conn.commit() # 关闭游标 cursor.close() # 关闭连接 conn.close()
-
增,插入数据
-
插入一条数据
# 这里把所有的匹配形式全部写成%s,不用去管mysql的定义的字段数据类型,源码中,已经将所有类型的数据转换成了字符串类型。 sql = 'insert into student(id,name,age) values(%s,%s,%s) ' insert_one = cursor.execute(sql,('1','万二','12')) print(insert_one)
-
插入多条数据(在后面加many),数据通过列表形式传入
sql = 'insert into student(id,name,age) values(%s,%s,%s)' insert_many = cursor.executemany(sql, [('7','李毅','22'), ('8','王二','42'), ('9','赵四','25')]) print(insert_many)
-
-
删,删除
# 删除数据 sql = 'delete from student where name = "赵四" ' delete_records = cursor.execute(sql) print(delete_records)
-
改
# 修改id为2的人的年龄为99 sql = 'update student set age = %s where id = 2' update_records = cursor.execute(sql,'99') print(update_records)
四.查:fetchone、fetchmany、fetchall
-
下列操作通用格式
import pymysql # 连接数据库 conn = pymysql.connect( host='localhost', port=3306, user='root', password='root', db='mydb', charset='utf8') # 创建游标 cursor = conn.cursor() # 查询所有记录 sql = 'select * from student' cursor.execute(sql) # 关闭游标 cursor.close() # 关闭连接 conn.close()
-
fetchone查看一条符合条件的数据,可以连续使用,查询的是上一个fetchone的后面一条
# 查询第一行数据 first = cursor.fetchone() print(first) # 查询第二行数据 second = cursor.fetchone() print(second)
-
fetchmany:获取指定的条数数据
# 只要3条符合条件的 raws = cursor.fetchmany(3) print(raws)
-
fetchall():查询所有符合条件的数据
raws = cursor.fetchall() print(raws)
五.游标移动
-
下面通用代码格式
import pymysql # 连接数据库 conn = pymysql.connect( host='localhost', port=3306, user='root', password='root', db='mydb', charset='utf8') # 创建游标 cursor = conn.cursor() # 查询所有记录 sql = 'select * from student' cursor.execute(sql) # 关闭游标 cursor.close() # 关闭连接 conn.close()
-
游标移动规则
-
cursor.scroll(num,mode=‘relative|absolute’) 当mode=absolute时,num不能小于0
cursor.scroll(1,mode='relative') # 相对当前位置移动
cursor.scroll(2,mode='absolute') # 相对绝对位置移动
-
代码实操
# 查询第一行数据 a = cursor.fetchone() # 取出第一行数据0号位置 print("a:",a) # (1, '张三', 20) --->游标指向1 # 相对当前位置移动一位往后移动一位 cursor.scroll(1,mode='relative') # ----> 游标指向2 b = cursor.fetchone() print('b:',b) # (3, '李四', 25) -----> 游标指向3 # 相对当前位置往前一位 cursor.scroll(-1,mode='relative') # ------> 游标指向2 c = cursor.fetchone() print("c:",c) # (3, '李四', 25) ------> 游标指向3 # 相对绝对位置(0号位置,第一行)往后移动三位,设置之后,光标指向第四行位置,所以打印的结果为第四行数据 cursor.scroll(3,mode='absolute') # ------->游标指向4 d = cursor.fetchone() # 取出第4行数据 print("d:",d) # ---------->游标指向5 e = cursor.fetchone() # 打印第5行数据 print('e:',e) # --------->游标指向6 f = cursor.fetchall() # 取出第6行数据以后所有的数据 print('f:',f)