day15-pymysql模块的使用
生活随笔
收集整理的這篇文章主要介紹了
day15-pymysql模块的使用
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
1 # 實現:使用Python實現用戶登錄,如果用戶存在則登錄成功(假設該用戶已在數據庫中)
2
3
4 import pymysql
5 # user = input('請輸入用戶名:')
6 #
7 # pwd = input('請輸入密碼:')
8
9
10
11 # 1.連接
12 conn = pymysql.connect(host='127.0.0.1', port=3306, user='root', password='123456', db='sxl', charset='utf8')
13
14
15 # 2.創建游標
16 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)
17
18 #注意%s需要加引號 有sql注入問題li' or 1=1 -- zdxv 或lijie' -- zdxv
19 # sql = "select * from userinfo where name='%s' and pwd='%s'" %(user, pwd) #注意修改內容及表
20 # print(sql)
21 # #解決sql注入問題
22 # sql="select * from userinfo where name=%s and pwd=%s" #!!!注意%s需要去掉引號,因為pymysql會自動為我們加上
23 # result=cursor.execute(sql,[user,pwd]) #pymysql模塊自動幫我們解決sql注入的問題,只要我們按照pymysql的規矩來。
24
25 # 3.執行sql語句
26 # cursor.execute(sql)
27 # result=cursor.execute(sql) #執行sql語句,返回sql查詢成功的記錄數目
28 # print(result)
29
30
31 # #1.增加數據
32 # sql = "insert into userinfo(name,pwd) values (%s,%s)"
33 # # effect_row = cursor.execute(sql,(123,123))
34 # #同時插入多條數據
35 # # effect_row = cursor.executemany(sql,[('李四','110'),('王五','119')])
36 # # print(effect_row)
37 # # 2.改
38 # sql = "update userinfo set name = %s where id = 4"
39 # effect_row = cursor.execute(sql,'111')
40 # print(effect_row)
41 # # 3.刪
42 # sql = "delete from userinfo where id >13"
43 # effect_row = cursor.execute(sql)
44 # print(effect_row)
45 # 4.查
46 sql = 'select * from userinfo'
47 num = cursor.execute(sql) #11
48 # # 4.1fetchone():獲取下一行數據,第一次為首行;
49 # #查詢第一行的數據
50 # row = cursor.fetchone()
51 # print(row) # (1, 'lijie', '123')
52 # # 查詢第二行數據
53 # row = cursor.fetchone()
54 # print(row) # (3, 'zz', '123')
55 # 4.2fetchall():獲取所有的數據
56 # rows = cursor.fetchall()
57 # print(rows) #((1, 'lijie', '123'), (3, 'zz', '123'), (5, '王五', '119'), (6, '123', '123'))
58 #注1:在實例化的時候,將屬性cursor設置為pymysql.cursors.DictCursor,每一行的數據都會生成一個字典
59 #[{'id': 1, 'name': 'lijie', 'pwd': '123'}, {'id': 3, 'name': 'zz', 'pwd': '123'}, {'id': 5, 'name': '王五', 'pwd': '119'}, {'id': 6, 'name': '123', 'pwd': '123'}]
60 # #注2:在fetchone示例中,在獲取行數據的時候,可以理解開始的時候,有一個行指針指著第一行的上方,獲取一行,它就向下移動一行,所以當行指針到最后一行的時候,就不能再獲取到行的內容,所以我們可以使用如下方法來移動行指針:
61 # cursor.scroll(1,mode='relative') # 相對當前位置移動
62 # cursor.scroll(3,mode='absolute') # 相對絕對位置移動 以第一行為參考
63 # # 第一個值為移動的行數,整數為向下移動,負數為向上移動,mode指定了是相對當前位置移動,還是相對于首行移動
64 row = cursor.fetchone()
65 print(row) # {'id': 1, 'name': 'lijie', 'pwd': '123'} 原始數據是135678
66 cursor.scroll(1,mode='relative')
67 row = cursor.fetchone()
68 print(row) # {'id': 5, 'name': '王五', 'pwd': '119'}
69 cursor.scroll(0,mode='absolute') #設置之后,光標相對于首行沒有任何變化,所以打印的結果為第一行數據
70 row = cursor.fetchone()
71 print(row) # {'id': 1, 'name': 'lijie', 'pwd': '123'}
72 cursor.scroll(1,mode='absolute')
73 row = cursor.fetchone()
74 print(row) # {'id': 3, 'name': 'zz', 'pwd': '123'}
75 cursor.scroll(-1,mode='relative') #設置之后,光標相對于當前位置往前移動了一行
76 row = cursor.fetchone()
77 print(row) # {'id': 3, 'name': 'zz', 'pwd': '123'}
78 #4.3 fetchmany(4):獲取4行數據
79 # row = cursor.fetchmany(2)
80 # print(row) # [{'id': 1, 'name': 'lijie', 'pwd': '123'}, {'id': 3, 'name': 'zz', 'pwd': '123'}]
81
82
83
84 #在數據庫里增、刪、改的時候,一定記得commit
85 conn.commit()
86
87
88
89
90
91 # 關閉連接,游標和連接都要關閉
92 cursor.close()
93 conn.close()
94
95 # if result:
96 # print('登陸成功')
97 # else:
98 # print('登錄失敗')
?
轉載于:https://www.cnblogs.com/lijie123/p/9392899.html
總結
以上是生活随笔為你收集整理的day15-pymysql模块的使用的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: websocket与ajax的区别浅析
- 下一篇: 关闭浏览器