亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

sqlite3.OperationalError:“索引”附近:語法錯誤

sqlite3.OperationalError:“索引”附近:語法錯誤

搖曳的薔薇 2021-09-24 21:21:27
我正在嘗試使用 sqlite3 模塊使用 python 連接到數據庫,但出現錯誤 - sqlite3.OperationalError: near "index": syntax error我為此搜索了一些解決方案,但沒有得到解決方案。我是 sqlite3 的新手def insert_into_db(url, title, description, keywords):    con = sqlite3.connect('index.db')    c = con.cursor()    create = r'''CREATE TABLE IF NOT EXISTS index (id INTEGER NOT NULL AUTO_INCREMENT,url VARCHAR,description TEXT,keywords TEXT);INSERT INTO index(url, title, description, keywords)VALUES('{}','{}',{}','{}');'''.format(url, title,description, keywords)    c.execute(create)    con.commit()    con.close()
查看完整描述

2 回答

?
烙印99

TA貢獻1829條經驗 獲得超13個贊

INDEX是 SQLite3 中的關鍵字。因此,它將被解析為關鍵字。不過,有幾種方法可以解決這個問題。


根據文檔,您可以使用反引號或引號將其指定為表名。例如,


CREATE TABLE IF NOT EXISTS `index` ...

或者


CREATE TABLE IF NOT EXISTS "index" ...

可能工作。


您可以將參數從execute()命令傳遞給您的 sql 語句。因此,


create = r'''CREATE TABLE ... VALUES(?,?,?,?);'''  # use ? for placeholders

c.execute(create, (url, title, description, keywords))  # pass args as tuple

與直接使用 Python 格式化參數相比,這更安全。


另請注意,SQLite 的 autoinc 語法AUTOINCREMENT沒有下劃線,并且它們要求該字段也是INTEGER PRIMARY KEY.


查看完整回答
反對 回復 2021-09-24
?
慕勒3428872

TA貢獻1848條經驗 獲得超6個贊

您不能命名表index。INDEX是保留關鍵字。

文件指出:

SQL 標準指定了大量關鍵字,這些關鍵字不得用作表、索引、列、數據庫、用戶定義函數、排序規則、虛擬表模塊或任何其他命名對象的名稱。


查看完整回答
反對 回復 2021-09-24
  • 2 回答
  • 0 關注
  • 633 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號