navicat 使用 pymysql模塊
阿新 • • 發佈:2019-05-16
格式 問題 charset 更新 () strong 元組 update base
新健庫 ,新增字段+類型+約束
設計表:外鍵(自增)
新建查詢
建立表模型
創建表 及數據(根據模型看) sql 練習題(根據模型看)pymysql 模塊
# import pymysql # #連接 # conn = pymysql.connect( # host = ‘localhost‘, # port = 3306, # user = ‘root‘, # password = ‘‘, # database = ‘day41‘, # charset = ‘utf8‘ # ) # 遊標 # cursor =conn.cursor() #執行完畢後返回的結果默認的以元組顯示# cursor =conn.cursor(pymysql.cursors.DictCursor) #將查詢結果做成字典的格式 # pymysql操作數據庫 # 執行sql 語句 # 語句在mysql裏面執行 # res=cursor.execute("select * from class") #執行sql語句 返回sql查詢成功的記錄數目 # print(res) #查詢到的數據總條數 # print(cursor.fetchone()) # {‘cid‘: 1, ‘caption‘: ‘三年二班‘} 獲取一條查詢結果 # 類似於管道取一條少一條 # print(cursor.fetchone()) #{‘cid‘: 2, ‘caption‘: ‘三年三班‘} 獲取一條查詢結果# # # print(cursor.fetchone()) #{‘cid‘: 3, ‘caption‘: ‘一年二班‘} 獲取一條查詢結果 # cursor.scroll(1,‘relative‘) #相對移動,第三條數據被截取 # # print(cursor.fetchall()) #[{‘cid‘: 4, ‘caption‘: ‘二年九班‘}] # cursor.scroll(1,‘absolute‘) #絕對移動,參照開始位置 # print(cursor.fetchall()) #[{‘cid‘: 2, ‘caption‘: ‘三年三班‘}, {‘cid‘: 3, ‘caption‘: ‘一年二班‘}, {‘cid‘: 4, ‘caption‘: ‘二年九班‘}]
sql 註入問題不要手動去拼接查詢的sql語句
username = input(">>>:").strip() password = input(">>>:").strip() sql = "select * from user where username=‘%s‘ and password=‘%s‘"%(username,password) # 用戶名正確 username >>>: jason‘ -- jjsakfjjdkjjkjs # 用戶名密碼都不對的情況 username >>>: xxx‘ or 1=1 --asdjkdklqwjdjkjasdljad #在sql裏面 --代表註釋掉 約束條件來判斷的時候 1=1 is Ture password >>>: ‘‘
正確註入
username = input(">>>:").strip()
password = input(">>>:").strip()
sql = "select * from user where username=%s and password=%s"
res=cursor.execute(sql,(username,password)) #sql會自己去拼接
增 改查
import pymysql conn = pymysql.connect(host=‘localhost‘, port=3306, user=‘root‘, password=‘‘, database=‘day41‘, #哪個庫下面 charset=‘utf8‘, autocommit=True # 插入數據之後 確保無誤後才會真正修改到數據庫 在這裏聲明的話每次操作都會直接修改到數據庫 ) cursor = conn.cursor(pymysql.cursors.DictCursor) username = input(‘》》》:‘) password = input(‘》》》: ‘) #插入數據 # sql = "insert into userinfo(name,password) values (%s,%s)" # 必須讓mysql自己拼接 不然有可能自己拼接的在mysql裏面執行的時候約束條件 # 有一個判斷就直接進去了數據就不安全了 # res = cursor.execute(sql,(username,password)) # conn.commit() #確保數據無誤後,commit之後才會將數據真正修改到數據庫 # if res: # print(cursor.fetchall()) # pass # else: # print(‘用戶名或密碼錯誤!‘) #查詢驗證 # sql=‘select * from userinfo where name =%s and password=%s ‘ # res=cursor.execute(sql,(username,password)) # conn.commit() # if res: # pass # else: # print(‘密碼或用戶名錯誤‘) #更新數據 # sql = "update userinfo set name=%s where id =%s" # # res=cursor.execute(sql,(username,password)) # if res: # pass # else: # print(‘error‘)
navicat 使用 pymysql模塊