PyMySQL連結MySQL的一些事務操作
阿新 • • 發佈:2018-11-09
1.在資料庫建立一張待操作表
# 匯入pymysql模組 import pymysql # 連線database conn = pymysql.connect(host=“你的資料庫地址”, user=“使用者名稱”,password=“密碼”,database=“資料庫名”,charset=“utf8”) # 得到一個可以執行SQL語句的游標物件 cursor = conn.cursor() # 定義要執行的SQL語句 sql = """ CREATE TABLE USER1 ( id INT auto_increment PRIMARY KEY , name CHAR(10) NOT NULL UNIQUE, age TINYINT NOT NULL )ENGINE=innodb DEFAULT CHARSET=utf8;View Code""" # 執行SQL語句 cursor.execute(sql) # 關閉游標物件 cursor.close() # 關閉資料庫連線 conn.close()
# 匯入pymysql模組(返回字典格式資料) import pymysql # 連線database conn = pymysql.connect(host=“你的資料庫地址”, user=“使用者名稱”,password=“密碼”,database=“資料庫名”,charset=“utf8”) # 得到一個可以執行SQL語句並且將結果作為字典返回的遊標 cursor = conn.cursor(cursor=pymysql.cursors.DictCursor)View Code# 定義要執行的SQL語句 sql = """ CREATE TABLE USER1 ( id INT auto_increment PRIMARY KEY , name CHAR(10) NOT NULL UNIQUE, age TINYINT NOT NULL )ENGINE=innodb DEFAULT CHARSET=utf8; """ # 執行SQL語句 cursor.execute(sql) # 關閉游標物件 cursor.close() # 關閉資料庫連線 conn.close()
2.向已建立的表中增加資料
# 匯入pymysql模組View Codeimport pymysql # 連線database conn = pymysql.connect(host=“你的資料庫地址”, user=“使用者名稱”,password=“密碼”,database=“資料庫名”,charset=“utf8”) # 得到一個可以執行SQL語句的游標物件 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" username = "Alex" age = 18 # 執行SQL語句 cursor.execute(sql, [username, age]) # 提交事務 conn.commit() cursor.close() conn.close()
# 匯入pymysql模組(在這裡也可以加入事務回滾機制) import pymysql # 連線database conn = pymysql.connect(host=“你的資料庫地址”, user=“使用者名稱”,password=“密碼”,database=“資料庫名”,charset=“utf8”) # 得到一個可以執行SQL語句的游標物件 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" username = "Alex" age = 18 try: # 執行SQL語句 cursor.execute(sql, [username, age]) # 提交事務 conn.commit() except Exception as e: # 有異常,回滾事務 conn.rollback() cursor.close() conn.close()View Code
# 匯入pymysql模組(獲取當前寫入資料id,關聯操作時會用到) import pymysql # 連線database conn = pymysql.connect(host=“你的資料庫地址”, user=“使用者名稱”,password=“密碼”,database=“資料庫名”,charset=“utf8”) # 得到一個可以執行SQL語句的游標物件 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" username = "Alex" age = 18 try: # 執行SQL語句 cursor.execute(sql, [username, age]) # 提交事務 conn.commit() # 提交之後,獲取剛插入的資料的ID last_id = cursor.lastrowid except Exception as e: # 有異常,回滾事務 conn.rollback() cursor.close() conn.close()View Code
# 匯入pymysql模組(批量執行) import pymysql # 連線database conn = pymysql.connect(host=“你的資料庫地址”, user=“使用者名稱”,password=“密碼”,database=“資料庫名”,charset=“utf8”) # 得到一個可以執行SQL語句的游標物件 cursor = conn.cursor() sql = "INSERT INTO USER1(name, age) VALUES (%s, %s);" data = [("Alex", 18), ("Egon", 20), ("Yuan", 21)] try: # 批量執行多條插入SQL語句 cursor.executemany(sql, data) # 提交事務 conn.commit() except Exception as e: # 有異常,回滾事務 conn.rollback() cursor.close() conn.close()View Code
3.刪除表中的資料
# 匯入pymysql模組 import pymysql # 連線database conn = pymysql.connect(host=“你的資料庫地址”, user=“使用者名稱”,password=“密碼”,database=“資料庫名”,charset=“utf8”) # 得到一個可以執行SQL語句的游標物件 cursor = conn.cursor() sql = "DELETE FROM USER1 WHERE id=%s;" try: cursor.execute(sql, [4]) # 提交事務 conn.commit() except Exception as e: # 有異常,回滾事務 conn.rollback() cursor.close() conn.close()View Code
4.修改表中的資料
# 匯入pymysql模組 import pymysql # 連線database conn = pymysql.connect(host=“你的資料庫地址”, user=“使用者名稱”,password=“密碼”,database=“資料庫名”,charset=“utf8”) # 得到一個可以執行SQL語句的游標物件 cursor = conn.cursor() # 修改資料的SQL語句 sql = "UPDATE USER1 SET age=%s WHERE name=%s;" username = "Alex" age = 80 try: # 執行SQL語句 cursor.execute(sql, [age, username]) # 提交事務 conn.commit() except Exception as e: # 有異常,回滾事務 conn.rollback() cursor.close() conn.close()View Code
5.查看錶中的資料
# 匯入pymysql模組 import pymysql # 連線database conn = pymysql.connect(host=“你的資料庫地址”, user=“使用者名稱”,password=“密碼”,database=“資料庫名”,charset=“utf8”) # 得到一個可以執行SQL語句的游標物件 cursor = conn.cursor() # 查詢資料的SQL語句 sql = "SELECT id,name,age from USER1 WHERE id=1;" # 執行SQL語句 cursor.execute(sql) # 獲取單條查詢資料 ret = cursor.fetchone() cursor.close() conn.close() # 列印下查詢結果 print(ret)View Code
6.擴充套件用法和注意事項
# 可以獲取指定數量的資料 cursor.fetchmany(3) # 游標按絕對位置移動1 cursor.scroll(1, mode="absolute") # 游標按照相對位置(當前位置)移動1 cursor.scroll(1, mode="relative") SQL注入問題 1. SQL語句在程式中是字串,動態拼接的字串,不要拿使用者輸入的內容去拼接字串 2. 不要自己拼接字串View Code