如何使用Python中的cursor.executemany執行高效SQL語句

一、cursor.executemany函數介紹

在Python中操作SQL,我們通常會用到cursor對象, 它是Python DB-API中所有數據庫游標的超類,可以實現對數據庫操作的各種方法,executemany()方法就是其中之一。

executemany()方法用於執行一條 SQL 語句,該 SQL 語句會執行多次,以實現一次操作多個數據,從而提高SQL的執行效率。和execute()方法不同的是,executemany()方法要求傳入的參數是元組嵌套的列表,列表中每個元組代表一組數據,而元組中的每個值則代表一個數據的字段值。簡而言之,就是executemany()方法實現了批量插入數據,可以使操作更加高效。


import pymysql

# 連接數據庫
conn = pymysql.connect(host='localhost', port=3306, user='root', password='666666', db='test_db')

# 創建游標對象
cursor = conn.cursor()

# 定義 SQL 語句
insert_sql = "INSERT INTO student_info VALUES (%s, %s, %s)"

# 定義數據
data = [
    ('001', '小明', 18),
    ('002', '小紅', 19),
    ('003', '小剛', 20)
]

# 批量插入數據
cursor.executemany(insert_sql, data)

# 提交
conn.commit()

# 關閉游標
cursor.close()

# 關閉連接
conn.close()

二、executemany函數使用注意事項

當使用executemany()方法批量插入數據時,需要注意以下事項:

1. SQL語句中需要有佔位符,因為executemany()方法會將數據作為參數傳遞給SQL語句執行;

2. 批量插入的數據必須為元組嵌套的列表形式,因為executemany()方法要將每一個元組作為參數傳遞給SQL語句;

3. 當批量插入大量數據時,我們可以使用executemany()方法來優化插入效率,但是在插入數據時需要考慮到事務的原子性,及時提交或回滾事務。

三、cursor.executemany與for循環一起使用

有時候我們需要批量插入數據到多個表中,這時候可以使用for循環和executemany()方法一起使用。


import pymysql

# 連接數據庫
conn = pymysql.connect(host='localhost', port=3306, user='root', password='666666', db='test_db')

# 創建游標對象
cursor = conn.cursor()

# 定義插入數據函數
def insert_data(table_name, data):
    # 定義 SQL 語句
    insert_sql = f"INSERT INTO {table_name} VALUES (%s, %s)"
    # 批量插入數據
    cursor.executemany(insert_sql, data)
    
# 定義數據
table1_data = [('001', '小明'), ('002', '小紅'), ('003', '小剛')]
table2_data = [('001', '語文'), ('002', '數學'), ('003', '英語')]

# 批量插入數據
insert_data('table1', table1_data)
insert_data('table2', table2_data)

# 提交
conn.commit()

# 關閉游標
cursor.close()

# 關閉連接
conn.close()

四、批量刪除數據的示例

cursor.executemany()不僅可以用於批量插入數據,還可以用於批量刪除數據。通過使用executemany()方法和delete語句,可以快速刪除指定id的數據。


import pymysql

# 連接數據庫
conn = pymysql.connect(host='localhost', port=3306, user='root', password='666666', db='test_db')

# 創建游標對象
cursor = conn.cursor()

# 定義刪除數據函數
def delete_data(ids):
    # 定義 SQL 語句
    delete_sql = "DELETE FROM student_info WHERE id = %s"
    # 批量刪除數據
    cursor.executemany(delete_sql, ids)

# 定義數據
ids = [(1,), (2,), (3,)]

# 批量刪除數據
delete_data(ids)

# 提交
conn.commit()

# 關閉游標
cursor.close()

# 關閉連接
conn.close()

原創文章,作者:KYKYV,如若轉載,請註明出處:https://www.506064.com/zh-hk/n/317084.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
KYKYV的頭像KYKYV
上一篇 2025-01-11 16:27
下一篇 2025-01-11 16:27

相關推薦

  • Python中引入上一級目錄中函數

    Python中經常需要調用其他文件夾中的模塊或函數,其中一個常見的操作是引入上一級目錄中的函數。在此,我們將從多個角度詳細解釋如何在Python中引入上一級目錄的函數。 一、加入環…

    編程 2025-04-29
  • Python列表中負數的個數

    Python列表是一個有序的集合,可以存儲多個不同類型的元素。而負數是指小於0的整數。在Python列表中,我們想要找到負數的個數,可以通過以下幾個方面進行實現。 一、使用循環遍歷…

    編程 2025-04-29
  • Python周杰倫代碼用法介紹

    本文將從多個方面對Python周杰倫代碼進行詳細的闡述。 一、代碼介紹 from urllib.request import urlopen from bs4 import Bea…

    編程 2025-04-29
  • Python計算陽曆日期對應周幾

    本文介紹如何通過Python計算任意陽曆日期對應周幾。 一、獲取日期 獲取日期可以通過Python內置的模塊datetime實現,示例代碼如下: from datetime imp…

    編程 2025-04-29
  • 如何查看Anaconda中Python路徑

    對Anaconda中Python路徑即conda環境的查看進行詳細的闡述。 一、使用命令行查看 1、在Windows系統中,可以使用命令提示符(cmd)或者Anaconda Pro…

    編程 2025-04-29
  • Python中capitalize函數的使用

    在Python的字符串操作中,capitalize函數常常被用到,這個函數可以使字符串中的第一個單詞首字母大寫,其餘字母小寫。在本文中,我們將從以下幾個方面對capitalize函…

    編程 2025-04-29
  • PHP和Python哪個好找工作?

    PHP和Python都是非常流行的編程語言,它們被廣泛應用於不同領域的開發中。但是,在考慮擇業方向的時候,很多人都會有一個問題:PHP和Python哪個好找工作?這篇文章將從多個方…

    編程 2025-04-29
  • Python for循環求1到100的積

    Python中的for循環可以方便地遍歷列表、元組、字典等數據類型。本文將以Python for循環求1到100的積為中心,從多個方面進行詳細闡述。 一、for循環語法 Pytho…

    編程 2025-04-29
  • Python程序需要編譯才能執行

    Python 被廣泛應用於數據分析、人工智能、科學計算等領域,它的靈活性和簡單易學的性質使得越來越多的人喜歡使用 Python 進行編程。然而,在 Python 中程序執行的方式不…

    編程 2025-04-29
  • Python字典去重複工具

    使用Python語言編寫字典去重複工具,可幫助用戶快速去重複。 一、字典去重複工具的需求 在使用Python編寫程序時,我們經常需要處理數據文件,其中包含了大量的重複數據。為了方便…

    編程 2025-04-29

發表回復

登錄後才能評論