为什么会报错?
Ошибка:
"sqlite3.OperationalError: near "table": syntax error"
编码
def sqlLiteConnect(self, db, table, column_name, lang=None):
self.connect = sqlite3.connect(db)
self.cursor = self.connect.cursor()
self.query_columns = "PRAGMA table_info('+table+')"
self.cursor.execute(self.query_columns)
self.queryRow = """SELECT id, Word, Translation FROM table WHERE id=random.randomint(0, 2000) """
self.cursor.execute(self.queryRow)
print(self.queryRow)
self.cursor.commit()
sqlLiteConnect(self, 'db/Lings_Words_Db.db', 'generalWords', 'Word')
第一个错误,在这一行:
从逻辑上讲,应该替换表变量的值,但为此,引号必须相同:
那些。应该连接三行:
"PRAGMA table_info("
,变量表中的一行 和")"
,并且您只有一整行,其中表只是文本,而不是变量名。+ 前后的空格无关紧要,我添加它们是为了提高可读性。此外,如果您希望最后一行中的表名用单引号括起来,那么您需要这样做:第二个错误:您在 SQL 查询中添加了 python 代码
random.randomint(0, 2000)
- 但 SQL 无法执行此代码。您需要使用 python 获取一个随机数,然后将其传递给请求:请参阅执行方法的帮助。
第三个错误:在查询
"""SELECT id, Word, Translation FROM table WHERE id=?"""
表中只是文本,将被视为表的名称(表名table
),而不是变量的名称,它将被替换为方法参数的值。完整更正的方法代码:
请注意,我使用 f-strings 来替换查询字符串中的变量值。例如,您可以在此处阅读更多内容:使用 f 字符串在 Python 中格式化