来自变量提供的表名的SQL SELECT

时间:2018-04-16 15:35:48

标签: python sql database

每当我尝试下面的代码时,我都会near "?": syntax error 我尝试了多种方法,包括将其添加到变量

这在python中可行吗?或者我在想错误的方向?

import sqlite3
sqlite_file = 'DATABASE.db'
conn = sqlite3.connect(sqlite_file)
c = conn.cursor()
word = ()
question = int(input("What would you like to see?"))
if question == 1:
    word = ("Batchnumbers")
if question == 2:
    word = ("Worker IDs")
c.execute('SELECT * FROM ?', (word))
    data = c.fetchall()
    for x in range(len(data)):
        print(data[x])

2 个答案:

答案 0 :(得分:2)

查询参数只能用于提供列,而不能用于提供表格或列名称。如果需要提供表名,则必须使用动态SQL,例如

c.execute('SELECT * FROM "{}"'.format(word))

请注意,此方法容易受到SQL注入问题的影响,因此您应该考虑减轻这些问题,例如,确保word不包含会导致错误(或更糟)的双引号字符。

答案 1 :(得分:1)

确实使用这行代码     word =

c.execute('SELECT * FROM "{}"'.format(word))