(資料庫之pymysql)

weixin_30924079發表於2020-04-04
許可權管理
http://www.cnblogs.com/linhaifeng/articles/7267587.html#_label6
一、pymysql模組(安裝與查詢)
1、安裝pymysql(python專用的mysql客戶端套接字) pip3 install pymysql 2、mysql 查詢 import pymysql conn=pymysql.connect( host='127.0.0.1', port=3306, user='root', password='jxtz0927', database='db40', charset='utf8' #防止亂碼 ) cursor=conn.cursor(pymysql.cursors.DictCursor) #將產生的結果以字典的形式顯示 [{'Tables_in_db40': 'department'}, {'Tables_in_db40': 'employee'}] # cursor=conn.cursor() # (('department',), ('employee',)) # rows=cursor.execute('show tables;') #rows 為受影響的行數 rows=cursor.execute('select * from class;') print(rows) #2 print(cursor.fetchone()) #一條 print(cursor.fetchmany(2)) #幾條 print(cursor.fetchall()) #全部 cursor.scroll(3,'absolute') #mode='absolute',絕對模式,從最開始位置向後移三條 cursor.scroll(1,'relative') #mode='relative',相對模式,從當前位置向後移一條 cursor.close() conn.close() 二、pymysql模組(防止sql注入問題) 1、錯誤做法, 自行對字串進行拼接,引發sql注入問題 (name= egon' --asdfg; name=xxxx'or 1=1--asdfg) import pymysql conn=pymysql.connect( host='127.0.0.1', port=3306, user='root', password='123', database='db42', charset='utf8' ) cursor=conn.cursor(pymysql.cursors.DictCursor) inp_user=input('使用者名稱>>:').strip() #inp_user="" inp_pwd=input('密碼>>:').strip() #inp_pwd="" sql="select * from user where username='%s' and password='%s'" %(inp_user,inp_pwd) #自行拼接,引發sql注入問題 print(sql) rows=cursor.execute(sql) if rows: print('登入成功') else: print('登入失敗') cursor.close() conn.close() 2、在服務端防止sql注入問題:不要自己拼接字串,讓pymysql模組去拼接 import pymysql conn=pymysql.connect( host='127.0.0.1', port=3306, user='root', password='123', database='db42', charset='utf8' ) cursor=conn.cursor(pymysql.cursors.DictCursor) inp_user=input('使用者名稱>>:').strip() #inp_user="" inp_pwd=input('密碼>>:').strip() #inp_pwd="" sql="select * from user where username=%s and password=%s" print(sql) rows=cursor.execute(sql,(inp_user,inp_pwd)) if rows: print('登入成功') else: print('登入失敗') cursor.close() conn.close() 三、pymysql模組(增刪改) import pymysql conn=pymysql.connect( host='127.0.0.1', port=3306, user='root', password='123', database='db42', charset='utf8' ) cursor=conn.cursor(pymysql.cursors.DictCursor) sql='update user set username="alexSB" where id=2' rows=cursor.execute(sql) #改資料 print(rows) print(cursor.lastrowid) sql='insert into user(username,password) values(%s,%s)' rows=cursor.executemany(sql,[('lwz','123'),('evia','455'),('lsd','333')]) #一次插入多行記錄 print(rows) print(cursor.lastrowid) #顯示插到哪行了(id) conn.commit() # 只有commit提交才會完成真正的修改 cursor.close() conn.close()

 

轉載於:https://www.cnblogs.com/zhaijihai/p/9664562.html

相關文章