簡體   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