尽管"[unixODBC][Driver Manager]Data source name not found, and no default driver specified"
在连接字符串中引用了DSN,但仍获得/etc/odbc.ini
。为什么会发生这种情况以及可以做些什么?
尝试使用docs (centos 7)设置pyodbc
以连接到MSSQLServer。然而,当试图实际连接到数据库时,
import pyodbc
# setup db connection
server = 'myserver'
database = 'mydb'
username = 'myusername'
password = 'mypassword'
cnxn_str = 'DSN=MyMSSQLServer;DATABASE='+database+'UID='+username+'PWD='+password+'MultipleActiveResultSets=True;'
cnxn = pyodbc.connect(cnxn_str)
获取错误"[unixODBC][Driver Manager]Data source name not found, and no default driver specified"
,即使在运行时:
[mapr@mnode01 ~]$ cat /etc/odbc.ini
[MyMSSQLServer] Driver=ODBC Driver 13 for SQL Server
Description=My MS SQL Server
Trace=No
Server=<now using my sql server ip>
我可以看到我在python代码中引用的DSN记录在/etc/odbc.ini
文件中。有谁知道这里会发生什么?感谢。
注意:我最初完全按照docs中的规定运行pyodbc设置,但后来重新执行this步骤以使用sql server的ip地址想连接到:
vi /home/user/odbcadd.txt
[MyMSSQLServer] Driver = ODBC Driver 13 for SQL Server
Description = My MS SQL Server
Trace = No
Server = <my sql server ip>
然后重新写入odbc.ini
:
sudo odbcinst -i -s -f /home/user/odbcadd.txt -l
答案 0 :(得分:5)
用户Gord Thompson评论的解决方案解决了我的问题。我用来填充~/odbcadd.txt
文件的/etc/odbc.ini
文件需要将'Driver ='行放在与DSN不同的行中,如下所示:
[mapr@mnode01 ~]$ cat /etc/odbc.ini
[MyMSSQLServer]
Driver=ODBC Driver 13 for SQL Server
Description=My MS SQL Server
Trace=No
Server=172.18.4.38