我当前遇到使用 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)')
对于诊断和解决此错误的任何帮助,我们将不胜感激。感谢您的时间和帮助!
您应该知道您需要连接哪个驱动程序。
需要连接最新的可用驱动程序并在连接中指定该驱动程序名称。
可以通过以下方式检查您的驱动程序:
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'
)