首页 > 解决方案 > 在 ubuntu16.04 上编译的 Python 代码在使用 pyodbc 模块与 db 交互并给出 sql 异常时不起作用

问题描述

我有一个大型 python 工具,在执行在 ubuntu14.04 机器上编译的二进制文件时可以完美运行,但是在 16.04 上编译时,相同的工具无法正常工作,并且当我的代码尝试执行时,它给了我如下所示的 sqlcursor.fetchall()异常python 的 pyodbc 模块,请注意,我在 16.04 机器上设置了所有 odbc 和 free_tds 驱动程序,其配置与我在 14.04 机器上的配置相同,并且我在 14.04 和 16.04 上使用的 python 版本是 2.7.9 。

EXCEPTION_*****: ('HY003', u'[HY003] [FreeTDS][SQL Server]Program type out of range (0) (SQLGetData)')

我如何编译:pyinstaller --onefile --clean

但是,当从终端本地运行源代码时,以二进制形式执行时失败的相同示例代码工作正常。

如果他们在 Ubuntu16.04 机器上运行时遇到任何来自 python 的此类 sql 异常,谁能帮助我

在 Ubuntu16.04 上编译后执行时出现异常的示例代码库

def main:
    import pyodbc
    connection = pyodbc.connect("DRIVER=FreeTDS;SERVER=Oil;PORT=xyz;DATABASE=xyz;UID=abc;PWD=abcpassword;WSID=xyz;APP=xyz;TDS_VERSION=8.0", autocommit=True)
    cursor=connection.cursor()
    q="select top 10 * from xyztable"
    execute = cursor.execute(q)
    results=cursor.fetchall()
    print results

cursor.fetchall()预期的结果是当我从pyodbc 模块运行任何 SQL 查询时,我应该能够得到结果

标签: pythonubuntu-16.04pyinstallerpyodbc

解决方案


推荐阅读