【发布时间】:2018-03-27 23:13:53
【问题描述】:
我在 python (2.7.10) 中使用psycopg2 连接到 postgresql 数据库。文档非常清楚动态 SQL 语句的组成:
从不、从不、从不使用 Python 字符串连接 (+) 或字符串参数插值 (%) 将变量传递给 SQL 查询字符串。甚至在枪口下也没有。
在psycopg2 2.7 版中,有新的sql 模块可以安全地防止SQL 注入来执行此字符串组合。尽管如此,我还是不明白如何正确地构造如下语句:
import psycopg2 as ps
C = psycopg.connect(host='my_host', port=Port, database='My_DB')
cur = C.cursor()
schema = 'some_schema'
table = 'some_table'
SQL = cur.execute("SELECT * FROM "+schema+"."+table+";") # This is horribly wrong
SQL = cur.execute("SELECT * FROM some_schema.some_table;") # That's what the result should be
【问题讨论】:
标签: python postgresql sql-injection psycopg2