您好,我正在尝试制作一条能够在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注入
答案 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
表。然后,他们可能会访问他们不应该看到的数据。