def assignID(self, article): if article.id is None: cur = PostgresDBReader.getInstance().cursor() cur.execute(u"select id from articles where link = '%s' and feed = %s union select nextval('art_seq')"%(article.link, article.feed.id)) all = cur.fetchall() if len(all) == 2: article.isnew = False article.id = all[0][0] elif len(all) == 1: article.isnew = True article.id = all[0][0] else: errors.log("PostgreSQLArticleLoader", "assignID", "error al obtener el identificador") raise "error al obtener el identificador"
def _loadMany(self, sql): cur = PostgresDBReader.getInstance().cursor() cur.execute(sql) res = [] for id, feed_id , link, title, content, published, fetch_date, created in cur.fetchall(): a = Article() a.content = content.decode("utf8") a.title = title.decode("utf8") a.create_date = created a.pub_date = published a.fetch_date = fetch_date a.loadFeed(feed_id, PostgreSQLArticleLoader.feed_mapper) a.link = link.decode("utf8") a.id = id res.append(a) return res
def getNLastURIs(self, n, feed_id): cur = PostgresDBReader.getInstance().cursor() cur.execute("select link from articles where feed = %s order by fetch_date desc limit %s"%(feed_id, n)) return [i[0].decode("utf8") for i in cur.fetchall()]