0

我正在使用 python 阅读 news.ycombinator RSS 提要,并使用 sqlite3 将它们存储在数据库中。例如,输入数据库的示例条目是 (id,title,ur)

('3814508', 'Github is making me feel stupid(er)', 'http://www.serpentine.com/blog/2012/04/08/github-is-making-me-feel-stupider/')

其中 id 是网站在其评论线程 url 中使用的评论 id。上面的列表是通过单独提取然后压缩它们制成ids的。现在我希望用这样的条目填充一个没有重复的数据库, titleurl

import sqlite3 as lite

con = lite.connect('/path/to/rss.db')
con.text_factory = str
cur=con.cursor()
# --- Extract ids, links, urls ----
zipped = zip( ids, titles, targets)
cur.execute("SELECT Id FROM Posts")
existing_ids = cur.fetchall()
for i in range(0,len(zipped)):
    if ids[i] not in existing_ids:
        cur.executemany("INSERT INTO Posts VALUES(?, ?, ?)", zipped)

问题是一次有三十个提要。打印列表显示正常行为,有 30 个整体。但是当我尝试写入数据库时​​,有大量条目,相同的 30 个条目在“帖子”表中反复重复 31 次

sqlite> SELECT Count(*) FROM Posts;
930

数据库具有架构CREATE TABLE Posts(Id TEXT, Title TEXT, Target TEXT);

4

1 回答 1

2

一旦找到丢失的条目,您似乎正在插入所有条目的整个列表?也许您的意思是遍历每个 zipped 元组,并检查每个元组是否已经存在?

于 2012-04-08T21:24:24.347 回答