在某些情况下使用python sqlite3插入或替换不替换

时间:2015-04-09 23:18:27

标签: python sql sqlite

我正在编写脚本,扫描一堆新闻文章并在SQLite数据库中存储所有单个单词以及每个单词出现的次数。为了做到这一点,我使用了this SO问题中描述的INSERT OR REPLACE。我遇到的问题是,有时它不会取代它。我认为导致这种情况是因为sql查询是并行发生的,所以在数据库中插入了一个单词,当我的脚本找到同一个单词的下一个外观时,它还没有完成将它插入到数据库中所以它创建了一个新条目(即插入而不是替换)。这是一个有效的问题吗?如果是这样,如何让我的脚本等到上一个sql查询完成后再执行下一个?

以下是插入/替换的代码:

def incremement_or_insert(subject, word):
    db = connect_to_db()
    c = db.cursor()
    query = "INSERT OR REPLACE INTO subject_words (subject, word, count) VALUES (?, ?, COALESCE((SELECT count + 1 FROM subject_words WHERE subject = ? AND word = ?), 1));"
    c.execute(query, (subject, word, subject, word))
    db.commit()
    db.close

0 个答案:

没有答案