我有以下查询
table = "#temp_table"
cursor.execute("""select * from %s as a """, (table))
我一直在来自stement的语法错误。为什么这不起作用?
答案 0 :(得分:2)
您收到此错误是因为传递给第二个参数(table)
(实际应该是(table,)
)的参数在运行的SQL语句中被转义。
在此示例中,select * from %s as a
转换为select * from '#temp_table' as a
,这是一个错误。要正确插入表名,您需要直接格式化SQL语句字符串,如下所示:
query = 'select * from "{}" as a'.format(table)
cursor.execute(query)
您应该非常小心以这种方式插入查询的数据,因为它非常容易受到SQL注入攻击。不要将此与不受信任的数据一起使用。