小编nco*_*ola的帖子

在SQLAlchemy中插入或更新重复键(IntegrityError)

我试图解析一些RSS提要并使用URL将URL写入数据库flask-sqlalchemy.

其中一些Feed重叠(即同一篇文章出现在多个Feed中或多次出现在同一个Feed中),因此我将主键定义为URL的(非随机)哈希值.

我的问题是,当我循环遍历URL并将它们添加到Session时,我尝试将它们提交到数据库时遇到异常.

这是我的代码:

for entry in feed.entries:
    # Create the database row
    article = Article(entry)

    # If the row already exists in the database
    if db.session.query(Article).filter_by(uuid=article.uuid).first():
        print "duplicate"
    else:
        db.session.merge(article)

db.session.commit()
Run Code Online (Sandbox Code Playgroud)

当文章已存在于数据库中时,将忽略该文章.但是,如果它存在于Session中但尚未提交数据库,那么SQLAlchemy会尝试在同一事务中多次写入它,我得到了sqlalchemy.exc.IntegrityError: (IntegrityError) column hash is not unique.

我的直觉是我需要检查会话中是否已存在具有该哈希的对象(以及查询数据库),我认为这是合并会做的,但我仍然得到错误.

python sqlalchemy flask

0
推荐指数
1
解决办法
2531
查看次数

标签 统计

flask ×1

python ×1

sqlalchemy ×1