我正在使用python阅读news.ycombinator RSS feed并使用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是网站在评论主题网址中使用的评论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)
问题在于一次有三十个Feed。打印列表显示正常行为,有30个人。但是,当我尝试写入数据库时,有大量条目,相同的三十个项目在“帖子”表中重复超过31次
sqlite> SELECT Count(*) FROM Posts;
930
db具有架构CREATE TABLE Posts(Id TEXT, Title TEXT, Target TEXT);
答案 0 :(得分:2)
一旦找到丢失的条目,您似乎正在插入所有条目的完整列表?也许你的意思是遍历压缩的每个元组,并检查每个元组是否已经存在?