这是我的python代码。似乎如果原始SQL包含IF NOT EXISTS
,sqlalchemy将不会执行它。也没有例外。
db.execute(text(
"""
IF NOT EXISTS ( select 1 from agent_assignment where exception_id = :exception_id )
BEGIN
insert into agent_assignment(exception_id, [user], work_status, insert_date, insert_user)
values (:exception_id, :user, 'pending', :date, :insert_update_user)
END
ELSE
update agent_assignment
set
[user] = :user,
update_date = :date,
update_user = :insert_update_user
where exception_id = :exception_id
"""),
exception_id = exception_id,
user = assignee,
date = datetime.now(),
insert_update_user = insert_update_user
)
如果删除IF..ELSE
部分,SQL将正确执行。所以我从技术上讲,在IF..ELSE
或EXISTS
作为声明的一部分的情况下执行原始SQL是不可能的?
运行原始SQL的正确方法是什么?
提前致谢。
答案 0 :(得分:0)
我需要在脚本末尾添加COMMIt
,因为查询有点复杂,并且sqlalchemy不能自动提交它。