在 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中文网其他相关文章!