【发布时间】:2020-01-30 14:13:12
【问题描述】:
当我们使用 sqlalchemy 通过 python 执行原始合并 sql 语句时,它不会添加预期的行并且执行显示为从 python 成功,但是当在 db 中执行查询时,表中填充了所需的数据。对于下面相同的代码,如果我使用 python 中的任何更新或选择语句,它成功地给出了预期的输出
from sqlalchemy.sql import text
from sqlalchemy import create_engine, types
oracle_connection_string = ('oracle+cx_oracle://{username}:{password}@'+
cx_Oracle.makedsn('{hostname}', '{port}', service_name='{service_name}'))
engine = create_engine(oracle_connection_string.format(
username='test',
password ='test',
hostname='test.com',
port='1521',
service_name='test.net'
))
pop_stmt = """merge into test1 a
using (select id from test2) b
on (a.id= b.id)
when not matched then
insert (a.id) values (b.id)"""
with engine.connect() as con:
con.execute(text(pop_stmt).execution_options(autocommit=True))
这里我们没有收到任何错误,该语句的执行显示从 python 成功但数据没有插入到 DB 的表中
【问题讨论】:
-
请编辑您的问题以定义您所说的“不工作”是什么意思。它会出错吗?它不会添加预期的行吗?还有什么?
标签: python sql oracle merge sqlalchemy