SQLAlchemy-如果存在唯一密钥,则添加更新

时间:2019-09-02 15:59:36

标签: python sqlalchemy

我目前正在将SQLAlchemy与MySQL数据库配合使用,以保存来自scrapy的数据。

如果唯一键(url)已经存在,我很难理解并找到一种解决方案来更新数据。我已经找到了一些解决方案,但是找不到包括它的方法。

我已经从这里尝试了很多解决方案,但是不知道如何集成它们:

def process_item(self, item, spider):
    session = self.Session()
    quotedb = QuoteDB()
    quotedb.titel = item["titel"]
    quotedb.description = item["description"]
    quotedb.url = item["url"]
    quotedb.last_updated = item["last_updated"]

    try:
        session.add(quotedb)
        session.commit()
    except:
        session.rollback()
        raise
    finally:
        session.close()

    return item

当前我得到重复的输入错误:

  

IntegrityError:(pymysql.err.IntegrityError)(1062,u“重复项   “ https://www.example.com/quote.html”代表关键字“ url””)

如果url(唯一键)已经存在,我想用新值更新/替换item.titelitem.descriptionitem.last_updated

在其他情况下,通常应该添加它。

0 个答案:

没有答案