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('登录失败')
View Code

 增丶删丶改: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()
View Code

查:

--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()
View Code

--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'))
View Code

默认情况下,我们获取到的返回值是元组,只能看到每行数据源,这个时候可以使用一下方式来返回字典,每一行的数据都会生成一个字典

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'}
View Code

--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'}]
View Code
原文地址:https://www.cnblogs.com/lzmdbk/p/9810948.html