如何在flask_sqlalchemy中使用PostgreSQL的“INSERT … ON CONFL
发布时间:2020-12-16 22:41:45 所属栏目:Python 来源:网络整理
导读:INSERT语句中的PostgreSQL ON CONFLICT子句提供“upsert”功能(即更新现有记录,或者如果不存在此类记录则插入新记录). SQLAlchemy通过PostgreSQL方言的Insert对象上的on_conflict_do_nothing和on_conflict_do_update方法支持此功能(如here所述): from sqlal
INSERT语句中的PostgreSQL ON CONFLICT子句提供“upsert”功能(即更新现有记录,或者如果不存在此类记录则插入新记录). SQLAlchemy通过PostgreSQL方言的Insert对象上的on_conflict_do_nothing和on_conflict_do_update方法支持此功能(如here所述):
我正在使用flask_sqlalchemy,它管理SQLAlchemy的引擎,会话和连接.要向数据库添加元素,我创建模型的实例,将其添加到数据库会话,然后调用commit,如下所示:
所以Insert对象被flask_sqlalchemy完全包装和遮盖. 如何访问PostgreSQL特定的方言方法来执行upsert?我是否需要绕过flask_sqlalchemy并创建自己的会话?如果我这样做,我怎么能确保没有冲突? 最佳答案
事实证明,您可以在db.session上执行较低级别的语句.所以解决方案看起来像这样:
我的模型类中的as_dict()和props_dict()方法允许我使用构造函数从传入的HTTP请求中过滤掉不需要的属性. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |