dav*_*ode 5 sql-server odbc sqlalchemy unixodbc pyodbc
我正在尝试使用SQLALchemy和pyodbc连接到SQL Server Express数据库,但我不断收到错误:
(pyodbc.Error)('IM002','[IM002] [unixODBC] [驱动程序管理器]未找到数据源名称,并且未指定默认驱动程序(0)(SQLDriverConnect)')
我真的不明白我的引擎网址是错还是其他什么.我的方案如下:
unixodbcunixodbc-dev我使用SQL Server身份验证为SQL Express配置了一个用户:
...然后:
现在...
可以从主机(我的mac)访问VM,因为:
ping -c 3 vm-ip
Run Code Online (Sandbox Code Playgroud)
成功!
但是,虽然我尝试了用户,密码,IP,服务器名称和端口的所有可能的排列:
'mssql+pyodbc://ar_user:ar_psw@vm-ip/master''mssql+pyodbc://ar_user:ar_psw@vm-ip:1433/master' 'mssql+pyodbc://IE10WIN8\\SQLEXPRESS''mssql+pyodbc://ar_user:ar_psw@IE10WIN8\\SQLEXPRESS''mssql+pyodbc://ar_user:ar_psw@IE10WIN8\\SQLEXPRESS:1433''mssql+pyodbc://ar_user:ar_psw@IE10WIN8\\SQLEXPRESS:1433/master'...还有很多!
我总是得到"数据源未找到错误".我该怎么办?
ps:即使在docker容器中,vm也可以ping通!
更新(已解决但不是100%):
我这样解决了:
我用/etc/odbcinst.ini这种方式配置了FreeTDS驱动程序:
[FreeTDS]
Description = TDS driver (Sybase/MS SQL)
Driver = /usr/lib/x86_64-linux-gnu/odbc/libtdsodbc.so
Setup = /usr/lib/x86_64-linux-gnu/odbc/libtdsS.so
client charset = UTF-8
Run Code Online (Sandbox Code Playgroud)
并在/etc/freetds/freetds.conf:
[global]
tds version = 7.3
client charset = UTF-8
Run Code Online (Sandbox Code Playgroud)
然后我使用以下字符串创建引擎:
'mssql+pyodbc://my_user:my_psw@machine_ip:1433/my_db?driver=FreeTDS'
Run Code Online (Sandbox Code Playgroud)
它似乎工作正常,但我得到这个警告:
SAWarning:无法识别的服务器版本信息'95 .12.255'.版本特定的行为可能无法正常运行.如果将ODBC与FreeTDS一起使用,请确保在FreeTDS配置中配置TDS_VERSION 7.0到7.3,而不是4.2.
我还使用环境变量定义了TDS版本,但它没有解决问题...任何想法?
| 归档时间: |
|
| 查看次数: |
4532 次 |
| 最近记录: |