mysql資料庫(三)——pymysql模組
阿新 • • 發佈:2019-01-08
pymysql模組:本質就是一個套接字客戶端軟體,使用前需要事先安裝
pip install pymysql
1.基本使用
import pymysql user_name = input('name:').strip() user_psw = input('psw:').strip() # 1.建連結 conn = pymysql.connect( host='0.0.0.0', port=3306, user='root', password='xxx', database='db1', charset='utf8' ) # 2.遊標 cursor = conn.cursor() # 執行完畢,返回的結果集預設以元祖顯示 # 3.執行sql語句 sql = "select * from usr where name='%s' and psw='%s'"%(user_name,user_psw) print(sql) res = cursor.execute(sql) cursor.close() conn.close()
2.execute()之SQL注入
注意:符號--會註釋掉它之後的sql,正確的語法:--後至少有一個任意字元
根本原理:就根據程式的字串拼接name='%s',我們輸入一個xxx' -- haha
import pymysql user_name = input('name:').strip() user_psw = input('psw:').strip() # 1.建連結 conn = pymysql.connect( host='0.0.0.0', port=3306, user='root', password='xxx', database='db1', charset='utf8' ) # 2.遊標 cursor = conn.cursor() #執行完畢,返回的結果集預設以元祖顯示 # 3.執行sql語句 sql = "select * from usr where name=%s and psw=%s" res = cursor.execute(sql,(user_name,user_psw)) # execute幫我們做字串拼接,我們無需且一定不能再為%s加引號了 cursor.close() conn.close() if res: print('登陸成功!') else: print('登入失敗!')
3.增加資料
import pymysql conn = pymysql.connect( host='0.0.0.0', port=3306, user='root', password='xxx', database='db1' ) cursor = conn.cursor() # sql = "insert into usr(name,psw) values('kong','hui123');" # res = cursor.execute(sql) sql = "insert into usr(name,psw) values(%s,%s);" res = cursor.execute(sql,('張三','hui123')) # 增加單個數據 # res = cursor.executemany(sql,[('李四','hui123'),('王五','hui123')]) # 新增多條記錄 # print(res) # 返回影響行數 conn.commit() # 必須有提交操作 cursor.close() conn.close()
4.查詢資料
import pymysql conn = pymysql.connect( host='0.0.0.0', port=3306, user='root', password='xxx', database='db1' ) cursor = conn.cursor() # 返回結果以元祖顯示 # cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) # 返回結果以字典顯示 sql = 'select * from usr;' rows = cursor.execute(sql) # 一個個的取查詢結果 # res1 = cursor.fetchone() # res2 = cursor.fetchone() # res3 = cursor.fetchone() # print(res1, res2, res3, sep='\n') # 一次取多個結果 # res = cursor.fetchmany(3) # for i in res: # print(i) # 取全部 res = cursor.fetchall() for i in res: print(i) # cursor.scroll(2,mode='absolute') # 相對初始位置移動 # cursor.scroll(2,mode='relative') # 相對當前位置移動 cursor.close() conn.close()