私は主キーとしてテキストをインポートしたデータベースを持っています。 次に、テキストに関連するキーワード、たとえば列 "arson"を持つ列があります。これらの各列のデフォルト値は0です。forループ中にsqlite3が主キーを参照できますか?
SQLite3データベースでテキストを読み込み、特定のキーワードが存在するかどうかを確認してから、キーワード列に1の値を割り当てようとしていますテキストにはキーワードが含まれていました。
以下の例は、テキストに「Arson」という単語が含まれている行のarson列の値のみを変更しようとしています。
プログラムはテキストを読んでいて、3回印刷すると、3つのテキストに「Arson」という単語があることを示しています。しかし、私は個々の行を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放火= ID = 1?"(X))' 'TypeError'例外を引き上げます。なぜあなたはそのエラーをキャッチしようとしていますか?あなたはあなたの構文が間違っている。 –
'c.execute(" UPDATEデータベースSET arson = 1 WHERE ID =? "(x))'は、 'TypeError'例外を発生させます。なぜあなたはそのエラーをキャッチしようとしていますか?あなたはあなたの構文が間違っている。 –
あなたが正しいです、私はtry except節を削除しました。それはDBのすべての列を開いていて、残りの部分はTEXTで、残りはINTEGERでした。私はそれを削除し、今はTypeErrorを取得します - 'str'オブジェクトは呼び出し可能ではありません。私は本当にこれで何をするのかわからない、私は文字列を渡して元のテキストを取得してdb:text = str(articles)sets = str(ordered_set(articles))c.execute( "INSERT OR (セット、テキスト)VALUES(?、?) "、(sets、text))forループ内の記事を参照するにはどうしたらいいですか? – DTracer