pyodbc 不适用于 RedHat 5.4.尝试使用 unixODBC 和 FreeTDS 连接到 ms-sql 数据库服务器? [英] pyodbc not working on RedHat 5.4. Trying to connect to ms-sql database server using unixODBC and FreeTDS?

查看:74
本文介绍了pyodbc 不适用于 RedHat 5.4.尝试使用 unixODBC 和 FreeTDS 连接到 ms-sql 数据库服务器?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我在尝试使用 pyobdc 访问 ms-sql 数据库时遇到问题.

I am facing issue while trying to access ms-sql database using pyobdc.

这是系统配置:蟒蛇 2.7.11pyodbc 3.0.7RedHat 5.4 (Tikanga) 32 位系统Microsoft SQL Server 2012(数据库服务器)unixODBC 2.3.0

Here is the System config: Python 2.7.11 Pyodbc 3.0.7 RedHat 5.4 (Tikanga) 32 Bit system Microsoft SQL Server 2012 (Database server) unixODBC 2.3.0

$ tsql -C 输出:

$ tsql -C output :

Compile-time settings (established with the "configure" script)
                            Version: freetds v0.91
             freetds.conf directory: /etc
     MS db-lib source compatibility: yes
        Sybase binary compatibility: no
                      Thread safety: yes
                      iconv library: yes
                        TDS version: 5.0
                              iODBC: no
                           unixodbc: yes
              SSPI "trusted" logins: no
                           Kerberos: no

$ odbcinst -j 输出:

$ odbcinst -j output :

unixODBC 2.3.0
DRIVERS............: /usr/local/etc/odbcinst.ini 
SYSTEM DATA SOURCES: /usr/local/etc/odbc.ini
FILE DATA SOURCES..: /usr/local/etc/ODBCDataSources
USER DATA SOURCES..: /root/.odbc.ini
SQLULEN Size.......: 4
SQLLEN Size........: 4
SQLSETPOSIROW Size.: 2

$ cat/usr/local/etc/odbcinst.ini 输出:

$ cat /usr/local/etc/odbcinst.ini output :

[ms-sql]
Description=TDS connection
Driver=/usr/local/lib/libtdsodbc.so
Setup=/usr/local/lib/libtdsodbc.so
FileUsage=1
UsageCount=1

$ cat/usr/local/etc/odbc.ini 输出:

$ cat /usr/local/etc/odbc.ini output :

[sqlserverdatasource]
Driver = ms-sql
Description = ODBC connection via ms-sql
Trace = No
Server = >IP Addresss To Database server<
Port = >Port Number<
Database = >Database name<

$ cat/etc/freetds.conf 输出:

$ cat /etc/freetds.conf output :

[sql-server]
host        = >IP Addresss To Database server<
port        = >Port Number<
tds version = 8.0

给我错误的命令:

connection = pyodbc.connect(r'DRIVER={FreeTDS};SERVER=>IP Addresss To Database server<; PORT=>Port Number<;DATABASE=Database name;UID=Database UID;PWD=DatabasePasswd;')

错误:

Traceback (most recent call last):   File "<stdin>", line 1, in
<module> pyodbc.Error: ('IM002', '[IM002] [unixODBC][Driver
Manager]Data source name not found, and no default driver specified
(0) (SQLDriverConnect)')

过去 3 天我一直在努力解决这个问题.但还没有运气.所以任何帮助/建议都会非常有帮助.我已经通过谷歌搜索.提前致谢:)

I am trying to solve this problem for last 3 days. But no luck yet. So any help/suggestion would be very helpful. I have already gone through googling. Thanks in advance :)

推荐答案

试试这个:

freetds.conf:

[sql-server]
    host = sql-server.host.com
    port = 1433
    tds version = 7.2

odbc.ini:

[sql-server]
    Driver = FreeTDS
    Server = sql-server.host.com
    Port = 1433
    TDS_Version = 7.2

odbcinst.ini:

[FreeTDS]
    Description = v0.91 with protocol v7.2
    Driver = /usr/local/lib/libtdsodbc.so

在 Python 中:

connection = pyodbc.connect(r'DRIVER={FreeTDS};SERVER=sql-server.host.com;PORT=1433;DATABASE=Database name;UID=Database Username;PWD=DatabasePasswd;TDS_Version=7.2')

TDS 8.0 版不存在.7.2 是 FreeTDS 0.91 支持的最高版本.请参阅此处以解释混淆:http://www.freetds.org/userguide/choosingtdsprotocol.htm

TDS Version 8.0 does not exist. 7.2 is the highest supported in FreeTDS 0.91. See here to explain the confusion: http://www.freetds.org/userguide/choosingtdsprotocol.htm

如果仍有问题,请尝试使用 tsqlisql 进行测试,分别测试连接堆栈的 FreeTDS 和 unixODBC 层.祝你好运!

If you're still having issues, try testing with tsql and isql to test the FreeTDS and unixODBC layers of the connection stack respectively. Good luck!

这篇关于pyodbc 不适用于 RedHat 5.4.尝试使用 unixODBC 和 FreeTDS 连接到 ms-sql 数据库服务器?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆