Я подключаюсь к базе данных sybase ASE 15 из Python 3.4 с помощью pyodbc и выполняю хранимую процедуру.
Все работает, как ожидалось, если я использую собственный pyodbc:
import pd
import pyodbc
con = pyodbc.connect('DSN=dsn_name;UID=username;PWD=password', autocommit=True)
df = pd.read_sql("exec p_procecure @GroupName='GROUP'", con)
[Драйвер - Adaptive Server Enterprise].
У меня должно быть autocommit = True, и если я этого не сделаю, я получаю следующую ошибку:
DatabaseError: сбой выполнения для sql 'exec ....': ('ZZZZZ', "[ZZZZZ] [SAP] [Драйвер ODBC ASE] [Adaptive Server Enterprise] Хранимая процедура 'p_procedure' может выполняться только в режиме несвязанных транзакций. Команда 'SET CHAINED OFF' заставит текущий сеанс использовать режим несвязанных транзакций. \ N (7713) (SQLExecDirectW) ")
Я пытаюсь добиться того же, используя SQLAlchemy (1.0.9):
from sqlalchemy import create_engine, engine
from sqlalchemy.orm import sessionmaker
from sqlalchemy.sql import text
url = r'sybase+pyodbc://username:password@dsn'
engine = create_engine(url, echo=True)
sess = sessionmaker(bind=engine).Session()
df = pd.read_sql(text("exec p_procedure @GroupName='GROUP'"),conn.execution_options(autocommit=True))
Сообщение об ошибке остается тем же, несмотря на то, что я указал autocommit = True для подключения. (Я также тестировал это на уровне сеанса, но в этом нет необходимости и нет никакой разницы).
DBAPIError: (pyodbc.Error) ('ZZZZZ', «[ZZZZZ] [SAP] [Драйвер ODBC ASE] [Adaptive Server Enterprise] ....
Вы видите здесь что-то не так?
Как всегда, мы будем благодарны за любую помощь.