当前位置:  开发笔记 > 编程语言 > 正文

使用SQLAlchemy连接到SQL Server

如何解决《使用SQLAlchemy连接到SQLServer》经验,为你挑选了0个好方法。

我正在尝试使用SQLALchemy和pyodbc连接到SQL Server Express数据库,但我不断收到错误:

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

我真的不明白我的引擎网址是错还是其他什么.我的方案如下:

我在Mac上

我有一个docker容器(基于带有和的Debian图像),我的python应用程序尝试连接到...unixodbcunixodbc-dev

一个VirtualBox的虚拟机上运行的Windows 8与SQL Express的2014 ...

我使用SQL Server身份验证为SQL Express配置了一个用户:

user:ar_user

密码:ar_psw

...然后:

我将TCP端口配置为1433并禁用动态端口(SQL Server配置管理器>网络配置>协议).

我关闭了Windows防火墙.

我为运行windows8的VM使用了仅限主机的适配器

现在...

可以从主机(我的mac)访问VM,因为:

ping -c 3 vm-ip

成功!

但是,虽然我尝试了用户,密码,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

并在/etc/freetds/freetds.conf:

[global]
tds version = 7.3
client charset = UTF-8

然后我使用以下字符串创建引擎:

'mssql+pyodbc://my_user:my_psw@machine_ip:1433/my_db?driver=FreeTDS'

它似乎工作正常,但我得到这个警告:

SAWarning:无法识别的服务器版本信息'95 .12.255'.版本特定的行为可能无法正常运行.如果将ODBC与FreeTDS一起使用,请确保在FreeTDS配置中配置TDS_VERSION 7.0到7.3,而不是4.2.

我还使用环境变量定义了TDS版本,但它没有解决问题...任何想法?

推荐阅读
拾味湖
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有