我使用pyodbc並執行存儲過程從Python 3.4連接到sybase ASE 15數據庫。pyodbc autocommit似乎不適用於sybase和sqlalchemy
所有作品,如果我使用本機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中。
我必須自動提交=真,如果我沒有做,我得到了以下錯誤:
DatabaseError: Execution failed on sql 'exec ....': ('ZZZZZ', "[ZZZZZ] [SAP][ASE ODBC Driver][Adaptive Server Enterprise]Stored procedure 'p_procedure' may be run only in unchained transaction mode. The 'SET CHAINED OFF' command will cause the current session to use unchained transaction mode.\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:[email protected]'
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][ASE ODBC Driver][Adaptive Server Enterprise]....
你能在這裏看到什麼不對嗎?
一如既往,任何幫助將不勝感激。