【问题标题】:Inserting Rows to SQL SERVER using pyodbc使用 pyodbc 向 SQL SERVER 插入行
【发布时间】:2018-03-22 14:35:25
【问题描述】:

我在 linux 机器 (Ubuntu 16.04) 上使用 pyodbc 连接到 SQL Server 时遇到了麻烦。

conn = pyodbc.connect(r'DRIVER={FreeTDS};PORT=**; SERVER=**; DATABASE=**;UID=AA;PWD=hfghj;')
curr = conn.cursor()
curr.fast_executemany = True
query = "INSERT INTO dbo.STG_CONTACTABILITY_SCORE VALUES (?" + ",?"*21 + ")"
sql_data = list(map(tuple, i.values))
curr.executemany(query, sql_data)

我收到以下错误:

('HY004', '[HY004] [FreeTDS][SQL Server]无效的数据类型 (0) (SQLBindParameter)')

当我将连接字符串更改为:

conn = pyodbc.connect(r'DRIVER={SQL Server};PORT=**; SERVER=**; DATABASE=**; UID=AA; PWD=hfghj;')

如果我在我的 Linux 机器上将 DriverFreeTDS 更改为 SQL SERVER 我收到以下错误:

pyodbc.Error: ('01000', "[01000] [unixODBC][驱动管理器]无法打开 lib 'SQL Server' : 找不到文件 (0) (SQLDriverConnect)")

我搜索了答案,但没有多少可以解决我的问题。 Linux机器连接SQL SERVER的驱动是什么?

【问题讨论】:

    标签: sql-server pyodbc unixodbc


    【解决方案1】:

    从Linux机器连接SQL SERVER的驱动是什么?

    如果您按照中所述安装 Microsoft 的 ODBC 驱动程序

    Installing the Microsoft ODBC Driver for SQL Server on Linux and macOS

    然后您可以使用DRIVER=ODBC Driver 17 for SQL ServerDRIVER=ODBC Driver 13 for SQL Server,具体取决于您选择的版本。

    【讨论】:

    • 嗨@Gord Thompson:我已经从你提到的链接安装了ODBC驱动程序17并更改为DRIVER=ODBC Driver 17 for SQL Server给出了('01000', "[01000] [unixODBC][Driver Manager]无法打开 lib 'ODBC Driver 17 for SQL Server':找不到文件 (0) (SQLDriverConnect)") 错误
    • 文件/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.0.so.1.1是否存在? (应该是 ~16.5 MB。)
    • 我搞定了。在我编辑了/etc/odbcinst.ini 并添加了指向/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.0.so.1.1 的描述和驱动程序之后。感谢您的宝贵时间。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-09-02
    • 2015-06-20
    相关资源
    最近更新 更多