我有一个脚本,做一些网络抓取新闻,然后上传的信息,我刮到一个PostgreSQL数据库在RDS。我的问题是关于确保同一篇新闻文章不被记录超过一次的首选方法。
每次我刮的时候,网络刮刀会返回40篇新闻文章。我设置了它,以便将每一篇文章+标题添加到标题列具有唯一键约束的表中。因此,为了确保每篇文章只记录一次,我有两个选项:
我的问题是:哪一个在性能上会更好?我猜想,如果第一篇文章的数量较少,会更好,但随着文章数量的增加,使用第二篇文章会更好,对吗?
发布于 2020-07-26 12:31:58
exist
下面是我推特刮板上的片段:
ins2 = """INSERT INTO tweets(id,sucker_id,created_at,user_id
,in_reply_to_id,is_reply_to_me,is_retweet,body)
SELECT tt.id,tt.sucker_id,tt.created_at,tt.user_id
,tt.in_reply_to_id,is_reply_to_me,is_retweet,tt.body
FROM tt_tweets tt
WHERE NOT EXISTS( SELECT 1 FROM tweets nx where nx.id = tt.id)
;"""而且:tweet有一个数字id,这使得脱扣变得非常容易。
发布于 2020-07-26 14:12:39
在本地识别刮刀的副本比往返数据库要快得多,前提是它不是以愚蠢的方式完成的。但是,与一开始进行刮擦的开销相比,这种差别是不可能有意义的。
但是,如果刮刀有一个有限的记忆标题,你将需要有一个捕获和忽略的能力无论如何。
https://stackoverflow.com/questions/63099289
复制相似问题