Python 使用Django对SQLite执行原始SQL会导致“DatabaseError:near”吗&引用;:语法错误`

Python 使用Django对SQLite执行原始SQL会导致“DatabaseError:near”吗&引用;:语法错误`,python,django,sqlite,django-1.3,Python,Django,Sqlite,Django 1.3,例如,当我使用cursor.execute()时: 如果未使用Django的参数替换,查询将按预期工作: >>> cur.execute("DROP TABLE my_table") django.db.utils.DatabaseError: no such table: my_table 我做错了什么?如何使参数化查询工作 注: 用作为查询的后缀没有帮助 根据文档,应使用%s,而不是SQLite的?(Django将%s翻译为?) 不能在参数化查询中替换元数据。不能在SQ

例如,当我使用
cursor.execute()
时:

如果未使用Django的参数替换,查询将按预期工作:

>>> cur.execute("DROP TABLE my_table")
django.db.utils.DatabaseError: no such table: my_table
我做错了什么?如何使参数化查询工作

注:

  • 作为查询的后缀没有帮助
  • 根据文档,应使用
    %s
    ,而不是SQLite的
    (Django将
    %s
    翻译为

不能在参数化查询中替换元数据。

不能在SQL语句中使用参数代替标识符(列或表名)。只能使用它们代替单个值

相反,您必须使用动态SQL来构造整个SQL字符串,并将其未经参数化发送到数据库(如果表名源自代码之外,请格外小心以避免注入)

>>> cur.execute("DROP TABLE my_table")
django.db.utils.DatabaseError: no such table: my_table