【问题标题】:pyodbc autocommit does not appear to work with sybase and sqlalchemypyodbc 自动提交似乎不适用于 sybase 和 sqlalchemy
【发布时间】:2016-02-16 06:39:48
【问题描述】:

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

如果我使用本机 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][ASE ODBC 驱动程序][Adaptive Server Enterprise]存储过程 'p_procedure' 只能在非链式事务模式下运行。 'SET CHAINED OFF' 命令将导致当前会话使用 unchained 事务模式。\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][ASE ODBC 驱动程序][自适应服务器企业]....

你能看出这里有什么不对吗?

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

【问题讨论】:

    标签: python sqlalchemy sap-ase pyodbc


    【解决方案1】:

    将 autocommit=True 参数作为 connect_args 参数字典中的一项传递确实有效:

    connect_args = {'autocommit': True}
    create_engine(url, connect_args=connect_args)
    

    connect_args – 将直接传递的选项字典 到 DBAPI 的 connect() 方法作为附加的关键字参数。

    【讨论】:

      【解决方案2】:

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

      ConnString = 'Driver=%SQL_DRIVER%;Server=%SQL_SERVER%;Uid=%SQL_LOGIN%;Pwd=%SQL_PASSWORD%;'
      
      SQL_CONNECTION = pyodbc.connect(ConnString)
      SQL_CONNECTION.autocommit = True
      

      【讨论】:

        猜你喜欢
        • 2022-11-01
        • 1970-01-01
        • 2018-12-27
        • 1970-01-01
        • 2014-07-13
        • 2016-02-16
        • 1970-01-01
        • 2019-05-11
        • 2016-07-19
        相关资源
        最近更新 更多