hon*_*zas 11 python sqlalchemy
有谁知道SQLAlchemy中的SQL"INSERT OR REPLACE"子句及其SQL表达式语言的等价物是什么?
非常感谢 - honzas
怎么样Session.merge?
Session.merge(instance, load=True, **kw)
Run Code Online (Sandbox Code Playgroud)
将实例的状态复制到具有相同标识符的持久实例上.
如果当前没有与会话关联的持久性实例,则将加载该实例.返回持久化实例.如果给定实例未保存,请保存副本并将其作为新的持久实例返回.给定的实例不会与会话关联.如果使用cascade ="merge"映射关联,则此操作会级联到关联的实例.
来自http://www.sqlalchemy.org/docs/reference/orm/sessions.html
Session.save_or_update(model)
Run Code Online (Sandbox Code Playgroud)
我不认为(如果我错了,请纠正我)INSERT OR REPLACE 不属于任何 SQL 标准;这是特定于 SQLite 的东西。有 MERGE,但也不是所有方言都支持。所以它在 SQLAlchemy 的通用方言中不可用。
最干净的解决方案是使用 Session,正如 M. Utku 所建议的那样。您也可以使用 SAVEPOINT 来保存,尝试:插入,除了 IntegrityError:然后回滚并进行更新。第三种解决方案是使用 OUTER JOIN 和 WHERE 子句编写 INSERT,该子句过滤具有空值的行。
| 归档时间: |
|
| 查看次数: |
15166 次 |
| 最近记录: |