使用Python 3.10连接SQL Server时遇到pyodbc.InterfaceError

问题描述 投票:0回答:1

我当前遇到使用 pyodbc 连接到 SQL Server 数据库的 Python 脚本的问题。该脚本在 Python 3.7.3 下可以正常运行,但自从升级到 Python 3.10 后,我遇到了接口错误。尽管设置了环境变量并在连接字符串中指定了驱动程序详细信息,问题仍然存在。我将非常感谢任何有助于解决此问题的见解或建议。

环境:

以前的Python版本:3.7.3(没有问题) 当前Python版本:3.10 操作系统:基于Unix的系统

代码

import pyodbc
import pandas as pd

with open('in.txt', "r") as file:
    readline=file.read().split("\n")
    pwd_in = readline[0]

def connect_to_sc():
    seoud_connection = pyodbc.connect(
        Driver = 'SQLServer-Driver',
        Server = 'SKL2SQ6.org,2893',
        Database = 'Seroud',
        User = 'JKL_User',
        Password = pwd_in,
        Trusted_Connection = 'No'
    )
    return seoud_connection

环境配置:

source /sys_apps_01/python/python310/profile/env.sh
export ODBCINI=/sys_apps_01/python/python310/odbc/odbc.ini
export ODBCINSTINI=/sys_apps_01/python/python310/odbc/odbcinst.ini
export LD_LIBRARY_PATH=/sys_apps_01/python/python310/sqlserver/msodbcsql17/lib64:$LD_LIBRARY_PATH
python3.10 main.py

错误信息:

File location using os.getcwd(): /cus_intel_01/suim/kls/emailmanual
Traceback (most recent call last):
  File "/cus_intel_01/suim/kls/emailmanual/main.py", line 24, in <module>
    exec(open(path).read())
  File "<string>", line 68, in <module>
  File "<string>", line 14, in connect_to_sc
pyodbc.InterfaceError: ('IM002', '[IM002] [unixODBC][Driver Manager]Data source name not found, and no default driver specified (0) (SQLDriverConnect)')

对于诊断和解决此错误的任何帮助,我们将不胜感激。感谢您的时间和帮助!

python-3.x sql-server database-connection pyodbc unixodbc
1个回答
0
投票

您应该知道您需要连接哪个驱动程序。

需要连接最新的可用驱动程序并在连接中指定该驱动程序名称。

可以通过以下方式检查您的驱动程序:

import pyodbc
print(pyodbc.drivers())

您将获得所有可用驱动程序的列表。

我得到这个输出:

['SQL Server',
 'SQL Server Native Client 11.0',
 'HDBODBC',
 'Microsoft Hive ODBC Driver',
 'ODBC Driver 17 for SQL Server']

所以,我使用

ODBC Driver 17 for SQL Server
进行连接:

你和我的代码变成:

seoud_connection = pyodbc.connect(
        Driver = 'ODBC Driver 17 for SQL Server',
        Server = 'SKL2SQ6.org,2893',
        Database = 'Seroud',
        User = 'JKL_User',
        Password = pwd_in,
        Trusted_Connection = 'No'
    )
© www.soinside.com 2019 - 2024. All rights reserved.