pymysql模块的使用
一.基本用法:
1 import pymysql 2 3 username = input('请输入用户名:') 4 pwd = input('请输入密码:') 5 6 # 建立连接 7 conn = pymysql.connect( 8 host='localhost', 9 user='root', 10 password="", 11 database='db13', 12 port=3306, 13 charset='utf8' 14 ) 15 # 创建游标 16 cur = conn.cursor() 17 sql = 'select * from userinfo where name="%s" and pwd="%s"'%(username,pwd) 18 print(sql) 19 20 res = cur.execute(sql) 21 print(res) 22 23 # 游标关闭 连接关闭 24 cur.close() 25 conn.close() 26 27 28 if res: 29 print('登录成功') 30 else : 31 print('登录失败')
增丶删丶改:conn.commit()
conn.commit() 在数据库增,删,改的时候,必须要进行提交,否则插入数据不生效
1 import pymysql 2 username = input('请输入用户名:') 3 4 pwd = input('请输入密码:') 5 6 7 8 # 1.连接 9 conn = pymysql.connect(host='localhost', port=3306, user='root', password='', db='db8', charset='utf8') 10 11 12 # 2.创建游标 13 cursor = conn.cursor() 14 15 16 # 操作 17 # 增 18 # sql = "insert into userinfo(username,pwd) values (%s,%s)" 19 20 21 # effect_row = cursor.execute(sql,(username,pwd)) 22 #同时插入多条数据 23 #cursor.executemany(sql,[('李四','110'),('王五','119')]) 24 25 # print(effect_row)# 26 27 # 改 28 # sql = "update userinfo set username = %s where id = 2" 29 # effect_row = cursor.execute(sql,username) 30 # print(effect_row) 31 32 33 # 删 34 sql = "delete from userinfo where id = 2" 35 effect_row = cursor.execute(sql) 36 print(effect_row) 37 38 39 #一定记得commit 40 conn.commit() 41 42 # 4.关闭游标 43 cursor.close() 44 45 # 5.关闭连接 46 conn.close()
查:
--fetchone():获取下一行数据,第一次为首行
1 import pymysql 2 3 # 1.连接 4 conn = pymysql.connect(host='localhost', port=3306, user='root', password='', db='db8', charset='utf8') 5 6 7 # 2.创建游标 8 cursor = conn.cursor() 9 10 sql = 'select * from userinfo' 11 cursor.execute(sql) 12 13 14 # 查询第一行的数据 15 row = cursor.fetchone() 16 print(row) # (1, 'mjj', '123') 17 18 # 查询第二行数据 19 row = cursor.fetchone() 20 print(row) # (3, '张三', '110') 21 22 # 4.关闭游标 23 cursor.close() 24 25 # 5.关闭连接 26 conn.close()
--fetchall(4):获取4行数据
1 import pymysql 2 3 # 1.连接 4 conn = pymysql.connect(host='localhost', port=3306, user='root', password='', db='db8', charset='utf8') 5 6 7 # 2.创建游标 8 cursor = conn.cursor() 9 10 sql = 'select * from userinfo' 11 cursor.execute(sql) 12 13 # 获取所有的数据 14 rows = cursor.fetchall() 15 print(rows) 16 17 # 4.关闭游标 18 cursor.close() 19 20 # 5.关闭连接 21 conn.close() 22 23 #运行结果 24 ((1, 'mjj', '123'), (3, '张三', '110'), (4, '李四', '119'))
默认情况下,我们获取到的返回值是元组,只能看到每行数据源,这个时候可以使用一下方式来返回字典,每一行的数据都会生成一个字典
cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) #在实例化的时候,将属性cursor设置为pymysql.cursors.DictCursor
另外,还可以使用如下方式来移动行指针:
cursor.scroll(1,mode='relative') # 相对当前位置移动 cursor.scroll(2,mode='absolute') # 相对绝对位置移动 第一个值为移动的行数,整数为向下移动,负数为向上移动,mode指定了是相对当前位置移动,还是相对于首行移动
1 # 1.Python实现用户登录 2 # 2.Mysql保存数据 3 4 import pymysql 5 6 # 1.连接 7 conn = pymysql.connect(host='localhost', port=3306, user='root', password='', db='db8', charset='utf8') 8 9 10 # 2.创建游标 11 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) 12 13 sql = 'select * from userinfo' 14 cursor.execute(sql) 15 16 17 # 查询第一行的数据 18 row = cursor.fetchone() 19 print(row) # (1, 'mjj', '123') 20 21 # 查询第二行数据 22 row = cursor.fetchone() # (3, '张三', '110') 23 print(row) 24 25 cursor.scroll(-1,mode='relative') #设置之后,光标相对于当前位置往前移动了一行,所以打印的结果为第二行的数据 26 row = cursor.fetchone() 27 print(row) 28 29 cursor.scroll(0,mode='absolute') #设置之后,光标相对于首行没有任何变化,所以打印的结果为第一行数据 30 row = cursor.fetchone() 31 print(row) 32 33 # 4.关闭游标 34 cursor.close() 35 36 # 5.关闭连接 37 conn.close() 38 39 #结果如下 40 41 {'id': 1, 'username': 'mjj', 'pwd': '123'} 42 {'id': 3, 'username': '张三', 'pwd': '110'} 43 {'id': 3, 'username': '张三', 'pwd': '110'} 44 {'id': 1, 'username': 'mjj', 'pwd': '123'}
--fetchmany():获取所有行数据源
1 import pymysql 2 3 # 1.连接 4 conn = pymysql.connect(host='localhost', port=3306, user='root', password='', db='db8', charset='utf8') 5 6 7 # 2.创建游标 8 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) 9 10 sql = 'select * from userinfo' 11 cursor.execute(sql) 12 13 14 15 # 获取2条数据 16 rows = cursor.fetchmany(2) 17 print(rows) 18 19 # 4.关闭游标 20 21 # rows = cursor.fetchall() 22 # print(rows) 23 cursor.close() 24 25 # 5.关闭连接 26 conn.close() 27 28 #结果如下: 29 [{'id': 1, 'username': 'mjj', 'pwd': '123'}, {'id': 3, 'username': '张三', 'pwd': '110'}]