我有一个数据库,我已经导入文本作为主键。 然后,我可以使用与文本相关的关键字列,例如列“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