python – SQLAlchemy密钥的身份映射中已存在冲突状态

python – SQLAlchemy密钥的身份映射中已存在冲突状态,第1张

概述我正在使用围绕SQLAlchemy的Flask-SqlAlchemy扩展来使用 Python中的SQLite数据库. 我在“格式”和“电影”模型之间建立了多对多关系.我已成功设置关系并执行查询没有问题.当我尝试更新电影的格式时会出现问题.调用我的更新方法会导致AssertionError:密钥的身份映射中已存在冲突状态(< class'moviecode.models.Format'>,(1,)) 我正在使用围绕sqlAlchemy的Flask-sqlAlchemy扩展来使用 Python中的sqlite数据库.

我在“格式”和“电影”模型之间建立了多对多关系.我已成功设置关系并执行查询没有问题.当我尝试更新电影的格式时会出现问题.调用我的更新方法会导致AssertionError:密钥的身份映射中已存在冲突状态(< class'movIEcode.models.Format'>,(1,))

此错误使我认为sqlAlchemy会话未在更新调用/ db查询之间正确删除/清除,但添加remove()调用没有帮助.

mainapp.py

app = Flask('movIEcode')db = sqlAlchemy(app)

vIEws.py

from updater import updateMovIE@app.route("/admin/movIEs/<int:movIEID>/refresh/",methods=['GET'])@login_requireddef refreshMovIE(movIEID):     updateMovIE(movIEID)     return redirect(url_for('admin'))

updater.py

from mainapp import dbfrom models import Format,MovIEdef updateMovIE(movIEID):    movIE = MovIE.query.filter_by(ID=movIEID).first()    formats = Format.query.all()    movIE.formats = newFormats #ERROR IS THROWN HERE    db.session.commit()    db.session.remove() #Trying to clean up Session. Makes no difference.

任何帮助或见解将不胜感激!我已经尝试了很多没有运气的sqlAlchemy方法(删除平台,合并电影对象,删除会话等).还尝试将电影格式设置为空白并在添加新格式之前将更改提交到数据库,但没有更改.

解决方法 您需要将结果中的每个项目附加到movIE.formats关系.

for format in formats:    movIE.formats.append(format)
总结

以上是内存溢出为你收集整理的python – SQLAlchemy密钥的身份映射中已存在冲突状态全部内容,希望文章能够帮你解决python – SQLAlchemy密钥的身份映射中已存在冲突状态所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://www.54852.com/langs/1196793.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-03
下一篇2022-06-03

发表评论

登录后才能评论

评论列表(0条)

    保存