gpt4 book ai didi

python - pyodbc autocommit 似乎不适用于 sybase 和 sqlalchemy

转载 作者:太空宇宙 更新时间:2023-11-04 05:41:38 29 4
gpt4 key购买 nike

我正在使用 pyodbc 从 Python 3.4 连接到 sybase ASE 15 数据库并执行存储过程。

如果我使用 native 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: 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: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,但错误消息是相同的。 (我也在 session 级别对此进行了测试,但应该没有必要并且没有任何区别)。

DBAPIError: (pyodbc.Error) ('ZZZZZ', "[ZZZZZ] [SAP][ASE ODBC Driver][Adaptive Server Enterprise]....

你能看出这里有什么问题吗?

一如既往,我们将不胜感激。

最佳答案

我在使用autocommit 选项时遇到了一些问题。唯一对我有用的是在建立连接后将此选项更改为 True

ConnString = 'Driver=%SQL_DRIVER%;Server=%SQL_SERVER%;Uid=%SQL_LOGIN%;Pwd=%SQL_PASSWORD%;'

SQL_CONNECTION = pyodbc.connect(ConnString)
SQL_CONNECTION.autocommit = True

关于python - pyodbc autocommit 似乎不适用于 sybase 和 sqlalchemy,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33713800/

29 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com