pip3 install pymysql import pymysql 注意: a.文件名不能寫本身自己 b.connect ----> conn ----> cursor c.執行sql語句 ---> execute(sql) d.取數據: fetchone() fetchall() fetchamany(size) e.增長刪除: conn.commit()
import pymysql # 鏈接mysql服務器 conn = pymysql.connect(host='localhost', user='root', password='123',database='db2', charset='utf8') cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) sql = "select * from student where id > %s " % (12,) cursor.execute(sql) # res = cursor.fetchone() res = cursor.fetchmany(10) # res = cursor.fetchall() ### 列表裏面套字典 print(res) cursor.close() conn.close()
import pymysql # 鏈接mysql服務器 conn = pymysql.connect(host='localhost', user='root', password='123',database='db1', charset='utf8') cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) sql = "delete from t7 where id=3" cursor.execute(sql) ### 刪除和更新的時候, 須要事物提交 conn.commit() # res = cursor.fetchone() # res = cursor.fetchmany(10) # res = cursor.fetchall() ### 列表裏面套字典 # print(res) cursor.close() conn.close()
注意: a. conn, cursor 用完了須要關閉資源鏈接 b. 查詢的時候, fetchone, fetchmany, fetchall, 默認返回的是元組, 須要返回字典的話: cursor = conn.cursor(cursor=pymysql.cursors.DictCursor) c. 刪除和更新的時候, 須要在execute以後, 添加 conn.commit()
a. 登陸驗證 寫sql語句的時候, %傳值的時候, 須要加引號: sql = "select * from t4 where name = '%s' and pwd = '%s'" % (username, pwd) 上面的sql語句帶來的風險是: 例一: username = zekai' # select * from t4 where name = 'zekai' #' and pwd = '' 例二: username = dbsahvbdsha' or 1=1 # select * from t4 where name = 'dbsahvbdsha' or 1=1
上面出現的問題,咱們稱之爲 SQL注入 (**********************************) 出現問題的根源是: 由於太過於相信用戶的輸入, 致使咱們在接受用戶輸入的參數的時候, 並無對他進行轉義 解決SQL注入: 1. 本身手工對用戶輸入的值進行轉義 2. 使用execute()自動進行過濾 sql = "select * from t4 where name = %s and pwd = %s" cursor.execute(sql,(username, pwd)) #$## 插入一條 cursor.execute(sql, ('lxxx', '1234'))
### 插入多條 data = [ ('aaaaa', 'aaa'), ('bbbb', 'bbb'), ('ffff', '666'), ('rrrr', '888'), ] cursor.executemany(sql, data) try: cursor.execute(sql, ('lxxx', '1234')) ### 刪除和更新的時候, 須要事物提交 conn.commit() except Exception as e: conn.rollback() cursor.lastrowid : 最後一行的行數