Когда мы выполняем необработанный SQL-оператор слияния через python с использованием sqlalchemy, он не добавляет ожидаемые строки и выполнение, показываемое как успешное из python, но когда запрос был выполнен в БД, таблица заполняется необходимыми данными. Для того же кода ниже, если я использую какое-либо обновление или оператор выбора из 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, но данныене был вставлен в таблицу в БД