繁体   English   中英

Sqlite3:OperationalError:在“ TABLE”附近:语法错误

[英]Sqlite3: OperationalError: near “TABLE”: syntax error

使用sqlite3时出现以下错误

OperationalError:在“ TABLE”附近:语法错误

该行发生错误:

c.execute('INSERT TABLE IF NOT EXISTS ' + bracketName + ' (player_1 TEXT, player_2 TEXT, winner TEXT, loser TEXT, player_1_score INTEGER, player_2_score INTEGER, round TEXT)')

搜索此错误表明,尽管将“表”用作表的名称(尽管是保留字),但仍会引起该问题。 在我的情况下,情况并非如此,因为我正在为表命名存储在变量“括号”中的所有内容。

我不确定如何添加更多代码以使其成为可重现的示例,所以我希望问题在语法上很明显

如前所述,创建新表的命令是CREATE TABLE。 INSERT用于在现有表中创建新行。 但是,据我所知(并提及您的问题),您不能对表名使用参数替换。 因此,这将起作用:

c.execute('CREATE TABLE IF NOT EXISTS ' + bracketName + ' (player_1 TEXT, player_2 TEXT, winner TEXT, loser TEXT, player_1_score INTEGER, player_2_score INTEGER, round TEXT)')

但是,正如已经指出的那样,这不是很安全。 这个答案中得出:如果您担心注入,请尝试编写一个在传递字符串之前清除字符串的函数。 该答案给出了一个“清除程序”的示例,该清除程序仅传递字母数字字符以避免注入攻击。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM