gpt4 book ai didi

python - 连接sqlalchemy到mssql时报错 "ODBC data type -150 is not supported"

转载 作者:行者123 更新时间:2023-11-28 20:03:39 25 4
gpt4 key购买 nike

尝试将 python sqlalchemy 连接到 msssql 服务器/数据库时,我一直遇到奇怪的错误。我需要使用 sqlalchemy,因为它(据我所知)是将 pandas 数据帧连接到 mssql 的唯一方法。

我试过用两种不同的方式连接 sqlalchemy:

  1. 使用完整的连接字符串:

    import sqlalchemy as sa
    import urllib.parse as ulp

    usrCnnStr = r'DRIVER={SQL Server};SERVER=myVoid\MYINSTANCE;Trusted_Connection=yes;'
    usrCnnStr = ulp.quote_plus(usrCnnStr)
    usrCnnStr = "mssql+pyodbc:///?odbc_connect=%s" % usrCnnStr

    engine = sa.create_engine(usrCnnStr)
    connection = engine.connect()
    connection.execute("select getdate() as dt from mydb.dbo.dk_rcdtag")
    connection.close()
  2. 使用 DSN:

    import sqlalchemy as sa
    import urllib.parse as ulp

    usrDsn = 'myDb'
    params = ulp.quote_plus(usrDsn)
    engine = sa.create_engine("mssql+pyodbc://cryo:pass@myDb")
    conn = engine.connect()
    conn.execute('select getdate() as dt')
    conn.close()

两种方法都返回相同的错误:

sqlalchemy.exc.DBAPIError: (pyodbc.Error) ('ODBC data type -150 is not supported.  Cannot read column .', 'HY000') [SQL: "SELECT  SERVERPROPERTY('ProductVersion')"]

我不确定如何解决这个错误;当我在 mssql 中执行“SELECT SERVERPROPERTY('ProductVersion')”时,它工作正常但返回数据类型为“sql_variant”。

有什么办法可以解决这个问题吗?

最佳答案

这肯定是 Issue 3814 中引入的错误,SQLAlchemy 1.1.0 中的新功能,他们引入了 SELECT SERVERPROPERTY('ProductVersion') 来获取 pyodbc MSSQL 驱动程序的服务器版本。降级到 1.0.15 将使代码再次工作,但希望 SQLAlchemy 开发人员将使新版本查找方案在新的补丁版本中更好地工作。

(SQLAlchemy 问题跟踪器中已经报告了 an issue,我会在此处添加此评论,但 bitbucket 无法让我登录。)

关于python - 连接sqlalchemy到mssql时报错 "ODBC data type -150 is not supported",我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39904693/

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