Python将变量放入sql FROM语句

时间:2018-07-17 01:24:12

标签: python sql

您好,我正在尝试制作一条能够在python中提供表格和位置的sql语句

SQL = "SELECT * FROM (%s) WHERE team_number=(%s) AND match_number=(%s);"
DATA = ('data', 2, 3)
cur.execute(SQL, DATA)
query = cur.fetchall()

我得到的错误是psycopg2.ProgrammingError: syntax error at or near "'data'"

SELECT * FROM ('data') WHERE team_number=(2) and match_number=(3)

注意:我正在使用(%s)停止sql注入

1 个答案:

答案 0 :(得分:1)

大多数准备好的语句API(包括Python)不允许将表名或列名用作参数。相反,您必须对表名进行硬编码:

SQL = "SELECT * FROM data WHERE team_number=(%s) AND match_number=(%s);"
DATA = (2, 3)
cur.execute(SQL, DATA)
query = cur.fetchall()

原因是允许将表名用作参数可能会使您面临安全风险。想象一下,如果有人要破解您的UI下拉菜单,然后选择user表。然后,他们可能会访问他们不应该看到的数据。