首頁 > 資料庫 > mysql教程 > 如何在 Python 中使用 MySQL 的預先準備語句來提高查詢效能並防止 SQL 注入?

如何在 Python 中使用 MySQL 的預先準備語句來提高查詢效能並防止 SQL 注入?

Barbara Streisand
發布: 2024-12-11 13:32:10
原創
718 人瀏覽過

How Can I Use Prepared Statements with MySQL in Python to Improve Query Performance and Prevent SQL Injection?

在 Python 中使用 MySQL 的預準備語句

在處理資料庫操作時,預備語句可以顯著提高查詢效能。在 Python 中,準備好的語句可以與 MySQL 一起使用。

Python 中的參數化查詢格式

在Python 中,您可以使用以下格式建立參數化查詢:

cursor.execute("SELECT FROM tablename WHERE fieldname = %s", [value])
登入後複製

參數標記%s 充當實際值的佔位符。不同的資料庫驅動程式可能使用不同的參數化樣式。若要確定適合您的驅動程式的樣式,您可以匯入驅動程式模組並列印其 paramstyle 屬性。

支援的參數化樣式

根據Python 增強提案(PEP- 249),支援以下參數化樣式:

  • 'qmark ':問題標記樣式(例如...WHERE name=?)
  • 'numeric':數字、位置樣式(例如...WHERE name=:1)
  • 'named':命名樣式(例如,...WHERE name= :name)
  • 'format':ANSI C printf 格式代碼(例如, ...WHERE name=%s)
  • 'pyformat':Python 擴充格式程式碼(例如 ...WHERE name=%(name)s)

用法範例

為了示範準備好的語句的用法,請考慮以下內容範例:

import mysql.connector

db = mysql.connector.connect(
    host="localhost",
    user="username",
    password="password",
    database="database_name"
)

cursor = db.cursor()

# Create a parameterized query
parameterized_query = "SELECT * FROM users WHERE name = %s"

# Execute the query with the provided parameter
cursor.execute(parameterized_query, ("John Doe",))

# Fetch the results
results = cursor.fetchall()

# Close the cursor and connection
cursor.close()
db.close()
登入後複製

使用參數化查詢可確保您的程式碼免受SQL 注入攻擊,並透過允許資料庫事先準備查詢計畫來提高查詢效能。

以上是如何在 Python 中使用 MySQL 的預先準備語句來提高查詢效能並防止 SQL 注入?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板