添加链接
link之家
链接快照平台
  • 输入网页链接,自动生成快照
  • 标签化管理网页链接

psycopg2.errors.InFailedSqlTransaction:当前交易被中止,命令被忽略,直到交易块结束。

12 人关注

我写了一个scrapy程序,从一个网站上搜刮数据,如果我搜刮到json文件或csv文件,该程序确实搜刮成功,当我试图搜刮到我的postgres数据库时,问题出现了,下图显示了我收到的错误,我怎样才能修复这个错误。

def process_item(self, item, spider):
    """Save deals in the database.
    This method is called for every item pipeline component.
    self.cur.execute("insert into Deals (Name,Deal_Url,Image_Url,Old_Price,Special_Price,Final_Price) values(%s,%s,%s,%s,%s,%s)",(item['Name'],item['Product_URL'],item['Image_URL'],item['Old_Price'],item['Special_Price'],item['Final_Price']))
    self.connection.commit()
    return item
    
python
python-3.x
postgresql
scrapy
psycopg2
PHULUSO GOVERN RAMULIFHO
PHULUSO GOVERN RAMULIFHO
发布于 2020-12-04
1 个回答
Maurice Meyer
Maurice Meyer
发布于 2020-12-04
已采纳
0 人赞同

当事务中的操作失败时,你需要回滚,除了修复恶意操作(可能是试图访问 item 中不存在的任何值),你可以用try/except块来包装你的插入语句。

def process_item(self, item, spider):
    """Save deals in the database.
    This method is called for every item pipeline component.
        self.cur.execute("insert into Deals (Name,Deal_Url,Image_Url,Old_Price,Special_Price,Final_Price) values(%s,%s,%s,%s,%s,%s)",(item['Name'],item['Product_URL'],item['Image_URL'],item['Old_Price'],item['Special_Price'],item['Final_Price']))