关于python:为什么会出现错误“ sqlite3.OperationalError:在“?”附近:语法错误”?

Why do I get the error 'sqlite3.OperationalError: near “?”: syntax error'?

本问题已经有最佳答案,请猛点这里访问。

我很难进行一个非常简单的sqlite3查询。 以下代码

1
2
p = ('user',)
cursor.execute("SELECT Guid FROM ? LIMIT 1",p)

给出错误

1
2
3
4
Traceback (most recent call last):
  File"try_Units.py", line 21, in <module>
    cursor.execute("SELECT Guid FROM ? LIMIT 1",p)
sqlite3.OperationalError: near"?": syntax error

但我使用的是此处示例中说明的确切语法。 那么,这种语法(python 3.4.0)有什么问题呢?

我想从名为" user"的表访问属性" Guid"。


您不能将SQL参数用于对象名称(例如表或列)。 毕竟,参数的全部目的是防止将值解释为SQL对象或命令。

在这里使用字符串格式,但是如果您的输入来自用户,请检查输入内容,以防止SQL注入:

1
2
p = 'user'
cursor.execute("SELECT Guid FROM {} LIMIT 1".format(p))