一、安裝和創建連接
1、pymysql是Python的一個第三方模塊,我們需要先使用pip進行安裝:
!pip install pymysql
2、安裝完成後,我們需要使用pymysql連接MySQL數據庫,連接的主要參數包括host、port、user、password、db等,示例代碼如下:
import pymysql
# 創建連接
conn = pymysql.connect(host='localhost', port=3306, user='root', password='root', db='test')
3、連接創建成功後,可以使用cursor()方法創建游標對象,用於執行SQL語句:
cursor = conn.cursor()
二、基本操作
1、執行SQL語句
1)查詢數據:使用execute()方法執行SQL語句,再使用fetchone()或fetchall()方法獲取查詢結果。
sql = "SELECT * FROM student"
cursor.execute(sql)
result = cursor.fetchall()
for row in result:
print(row)
2)插入數據:使用execute()方法執行insert語句,再使用commit()方法提交事務。
sql = "INSERT INTO student (name, age) VALUES ('Tom', 20)"
cursor.execute(sql)
conn.commit()
3)更新數據:使用execute()方法執行update語句,再使用commit()方法提交事務。
sql = "UPDATE student SET age = 21 WHERE name = 'Tom'"
cursor.execute(sql)
conn.commit()
4)刪除數據:使用execute()方法執行delete語句,再使用commit()方法提交事務。
sql = "DELETE FROM student WHERE name = 'Tom'"
cursor.execute(sql)
conn.commit()
2、批量操作
1)批量插入數據:使用executemany()方法批量執行insert語句,再使用commit()方法提交事務。
students = [('Tom', 20), ('Jerry', 21), ('Mike', 19)]
sql = "INSERT INTO student (name, age) VALUES (%s, %s)"
cursor.executemany(sql, students)
conn.commit()
2)批量更新數據:使用executemany()方法批量執行update語句,再使用commit()方法提交事務。
students = [('Tom', 21), ('Jerry', 22), ('Mike', 20)]
sql = "UPDATE student SET age = %s WHERE name = %s"
cursor.executemany(sql, students)
conn.commit()
3)批量刪除數據:使用executemany()方法批量執行delete語句,再使用commit()方法提交事務。
names = ['Tom', 'Jerry', 'Mike']
sql = "DELETE FROM student WHERE name = %s"
cursor.executemany(sql, names)
conn.commit()
三、高級操作
1、事務處理
1)事務的基本操作:
try:
cursor1 = conn.cursor()
sql1 = "UPDATE student SET age = 20 WHERE name = 'Tom'"
cursor1.execute(sql1)
cursor2 = conn.cursor()
sql2 = "UPDATE student SET age = 22 WHERE name = 'Jerry'"
cursor2.execute(sql2)
# 提交事務
conn.commit()
except:
# 回滾事務
conn.rollback()
事務處理要點:
- 多條SQL語句必須使用同一個連接。
- 多個cursor對象必須保證在同一事務中執行。
- 出錯時需要回滾事務。
2、預處理SQL語句
使用預處理語句可以有效地防止SQL注入攻擊,也可以提高性能。示例代碼如下:
sql = "INSERT INTO student (name, age) VALUES (%s, %s)"
cursor.execute(sql, ('Tom', 20))
conn.commit()
3、獲取自增ID
使用lastrowid屬性可以獲取最後一次插入操作產生的自增ID。
sql = "INSERT INTO student (name, age) VALUES ('Tom', 20)"
cursor.execute(sql)
conn.commit()
id = cursor.lastrowid
print(id)
4、獲取字段信息
使用description屬性可以獲取查詢結果的字段信息。
sql = "SELECT * FROM student"
cursor.execute(sql)
# 獲取字段信息
desc = cursor.description
print([col[0] for col in desc])
四、關閉連接
執行完所有操作後,需要關閉游標和連接以釋放資源。
cursor.close()
conn.close()
總結
本文對Python pymysql的用法進行了詳細的闡述,並從安裝創建連接、基本操作、高級操作等多個方面進行了講解。在實際應用中,可以結合具體情況選擇不同的操作方式和參數,以最大程度地提高效率和安全性。
原創文章,作者:FVMLU,如若轉載,請註明出處:https://www.506064.com/zh-hant/n/332873.html