SQLAlchemy Core中如何为GENERATED ALWAYS标识列添加OVERRIDING SYSTEM VALUE
解决方法
SQLAlchemy 1.4及更高版本的PostgreSQL方言已经原生支持OVERRIDING SYSTEM VALUE语法,你只需要在构造插入语句时传入对应的参数即可,修改后的代码如下:
insert_stmt = postgresql.insert(target, overriding_system_value=True).values(vals) primary_keys = [key.name for key in inspect(target).primary_key] stmt = insert_stmt.on_conflict_do_nothing(index_elements=primary_keys) conn.execute(stmt)
如果你使用的SQLAlchemy版本低于1.4,没有内置该参数,可以通过手动拼接语法片段的方式实现:
from sqlalchemy import text insert_stmt = postgresql.insert(target).values(vals) # 插入OVERRIDING SYSTEM VALUE子句 insert_stmt = insert_stmt + text(" OVERRIDING SYSTEM VALUE") primary_keys = [key.name for key in inspect(target).primary_key] stmt = insert_stmt.on_conflict_do_nothing(index_elements=primary_keys) conn.execute(stmt)
内容的提问来源于stack exchange,提问作者kjay
相关产品推荐
相关产品推荐

