pyodbc.Error: ('IM002', '[IM002] [unixODBC][驱动管理] 未找到数据源名称,也未指定默认驱动 (0) (SQLDriverConnect)')

7 投票
1 回答
18184 浏览
提问于 2025-04-18 07:46

我正在尝试使用pyodbc连接到一个数据库,但遇到了以下错误,有谁能建议我如何解决这个错误吗?

我使用以下命令安装了pyodbc

sudo apt-get install unixodbc-dev
pip install pyodbc

代码:

#!/usr/bin/python
import pyodbc

server_name='odsdb.qualcomm.com'
database_name='ODS'
#cnx = pyodbc.connect("SERVER="+server_name+";DATABASE="+database_name)
cnx = pyodbc.connect("DRIVER={SQL Server};SERVER="+server_name+";DATABASE="+database_name)

db_cursor = cnx.cursor() 

print "List of tables in DB"
for row in db_cursor.tables():
    print row.table_name
print "\n"

错误:

Traceback (most recent call last):
  File "mysql.py", line 7, in <module>
    cnx = pyodbc.connect("DRIVER={SQL Server};SERVER="+server_name+";DATABASE="+database_name)

1 个回答

1

你应该先设置和配置 FreeTDS。下面是我文件中的一些示例配置,但我相信其他的配置也能用。一个不同之处是我在使用 Django,但下面的结果最终还是能用,不过用 SQL 认证效果要比用 Windows 认证好得多。

/etc/freetds/freetds.conf 开始(如果服务器名称没有 DNS 解析,就用服务器的 IP 地址)。

# A typical Microsoft server
[MyServer]
        host = 10.0.0.10\path
        port = 1433
        tds version = 7.0

接下来是 /etc/odbcinst.ini 的内容。

[FreeTDS]
Description = FreeTDS
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.s

然后是 /etc/odbc.ini 的内容。

[MyServer]
Description = "Some Description"
Driver = FreeTDS
ServerName = servername\path
Server = servername
Port = 1433
Database = DBNAME

然后这个命令可以让我连接到数据库。

tsql -S MyServer -U username@servername -P password

撰写回答