[英]sqlite3 “OperationalError: near ”)“: syntax error” python
[英]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.