我有一個數據庫,我已經導入文本作爲主鍵。 然後,我可以使用與文本相關的關鍵字列,例如列「arson」。每個列的默認值都爲0.在for循環中,sqlite3可以引用主鍵嗎?
我試圖讓SQLite3數據庫讀取文本,檢查是否存在特定的關鍵字,然後爲關鍵字列指定1的值文字包含關鍵字。
下面的例子是我試圖只改變文本中包含單詞「Arson」的行的arson列中的值。
該程序正在讀取文本並打印3次,表明其中三個文本中包含「縱火犯」字樣。但是,我無法使用1更新單個行。我已經嘗試了下面的代碼的一些變化,但似乎卡在這一個。
!# Python3
#import sqlite3
sqlite_file = 'C:\\Users\\xxxx\\AppData\\Local\\Programs\\Python\\Python35-32\\database.sqlite'
conn = sqlite3.connect(sqlite_file)
c = conn.cursor()
texts = c.execute("SELECT texts FROM database")
for articles in texts:
for words in articles:
try:
if "Arson" in words:
print('yes')
x = articles
c.execute("UPDATE database SET arson = 1 WHERE ID = ?" (x))
except TypeError:
pass
conn.commit()
conn.close()
'c.execute( 「UPDATE SET數據庫縱火= 1 WHERE ID =?」(X))'將提高一個'TypeError'異常。你爲什麼試圖抓住那個錯誤?你的語法錯了。 –
c.execute(「更新數據庫SET arson = 1 WHERE ID =?」(x))'會引發TypeError異常。你爲什麼試圖抓住那個錯誤?你的語法錯了。 –
你是對的,我刪除了try除外條款。這是從打開數據庫中的所有列開始的剩餘部分,其中一些是TEXT,另一些是INTEGER。我刪除它,現在得到一個TypeError - 'str'對象不可調用。我真的不知道該怎麼做,我將字符串傳遞給c.execute以將原始文本導入到db:text = str(articles)sets = str(ordered_set(articles))c.execute(「INSERT OR IGNORE INTO數據庫(集合,文本)VALUES(?,?)「,(集合,文本))如何獲取它以引用我的for循環中的文章? – DTracer