我正在使用 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
的。现在我希望用这样的条目填充一个没有重复的数据库, title
url
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);