首頁 >資料庫 >mysql教程 >如何在 psycopg2 中安全地將表名稱作為參數傳遞?

如何在 psycopg2 中安全地將表名稱作為參數傳遞?

Linda Hamilton
Linda Hamilton原創
2025-01-12 11:06:42918瀏覽

How Can I Safely Pass a Table Name as a Parameter in psycopg2?

使用 psycopg2 安全傳遞表名參數

在 psycopg2 中,使用動態參數建立查詢可能會引發問題,如提供的程式碼所示。強烈建議不要在給定程式碼中使用字串連接。

使用 psycopg2 SQL 模組

Psycopg2 提供了一個解決方案,即其在 2.7 版本中引入的 SQL 模組。此模組有助於動態產生查詢,包括表名參數。其文法如下:

<code>from psycopg2 import sql

# 示例:使用动态表名插入数据
cur.execute(
    sql.SQL("insert into {table} values (%s, %s)")
        .format(table=sql.Identifier('my_table')),
    [10, 20])</code>

正確參數化的重要性

必須注意,優選使用 psycopg2 的 SQL 模組,而不是 Python 字串操作或字串參數插值。文件明確警告不要使用這些方法,因為它們會引入漏洞並危及資料庫完整性。

有關 SQL 模組的更多信息,請參閱官方文檔:https://www.php.cn/link/9a0f86604fa1dc1686a0cad86a808a5c

以上是如何在 psycopg2 中安全地將表名稱作為參數傳遞?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn