データベースのサイズが大きくなりすぎないように、sqliteにはまだ挿入されていない値を挿入します。私はいくつかの検索を行っており、そうする最良の方法はUNIQUE制約を使うことだと考えました。ユニークではない値を挿入するとsqliteがクラッシュするようですが、このエラーを回避して次のサブミットを続行するにはどうしたらいいですか?sqlite3、IntegrityError:値を挿入するときにUNIQUE制約に失敗しました
以下は関連するコードです。ここで
sql = sqlite3.connect('submissions.db')
cur = sql.cursor()
cur.execute('CREATE TABLE IF NOT EXISTS some_table(id TEXT UNIQUE)')
sql.commit()
for thing in things:
try:
# Do some stuff
except AttributeError:
pass
cur.execute('INSERT INTO some_table VALUES(?)', [thing])
sql.commit()
はトレースバックです:
Traceback (most recent call last):
File "D:\Directory\Python\Projects\Oddshotcrawler for Reddit, globaloffensive\oddshotcrawler.py", line 62, in <module>
oddshotcrawler()
File "D:\Directory\Python\Projects\Oddshotcrawler for Reddit, globaloffensive\oddshotcrawler.py", line 54, in oddshotcrawler
cur.execute('INSERT INTO oldposts VALUES(?)', [thing])
sqlite3.IntegrityError: UNIQUE constraint failed: some_table.id
[Finished in 7.1s with exit code 1]