Pyodbc找不到FreeTDS驱动程序 - python

我在Centos 7 Linux计算机上,尝试通过pyodbc连接到SQL数据库。我了解到您需要设置DSN,并且可以通过安装freetds驱动程序并执行以下操作来实现:

import pyodbc
cnxn = pyodbc.connect('DRIVER={FreeTDS};SERVER=example;DATABASE=TEST;')

不幸的是,当我这样做时,我收到一条错误消息,说找不到驱动程序FreeTDS。我跑了:

$ ./configure
$ make
$ make install

似乎已经安装了它,但出现了同样的错误。有人可以给我发送工作示例的链接吗

参考方案

如果要从源代码编译FreeTDS,它将安装到IIRC的/ usr / local / freetds中。您也可以在CentOS上通过yum安装,并且还需要unixODBC。基本上,FreeTDS将SQL Server桥接到unixODBC,而pyodbc将unixODBC桥接到Python。

这是使用FreeTDS,unixODBC和好友设置的示例:

freetds.conf:

[server]
        host = server.com
        port = 1433
        tds version = 7.3

odbc.ini:

[server]
Driver = FreeTDS
Server = server.com
Port = 1433
TDS_Version = 7.3

odbcinst.ini:

[FreeTDS]
Description = FreeTDS with Protocol up to 7.3
Driver = /usr/lib64/libtdsodbc.so.0

上面的Driver =位置可能有所不同,具体取决于您的FreeTDS发行版-如果是从源代码编译的,则很可能是/usr/local/freetds/lib/libtdsodbc.so

pyodbc connect,免费提供DSN:

DRIVER={FreeTDS};SERVER=server.com;PORT=1433;DATABASE=dbname;UID=dbuser;PWD=dbpassword;TDS_Version=7.3;

一些注意事项:

您必须更新TDS版本以匹配您正在运行的SQL Server版本和您正在运行的免费TDS版本。 0.95版支持TDS 7.3版。
TDS 7.3版将与MS SQL Server 2008及更高版本一起使用。
使用MS SQL Server 2005的TDS版本7.2。

看到这里更多:

https://msdn.microsoft.com/en-us/library/dd339982.aspx

祝好运。

Python sqlite3数据库已锁定 - python

我在Windows上使用Python 3和sqlite3。我正在开发一个使用数据库存储联系人的小型应用程序。我注意到,如果应用程序被强制关闭(通过错误或通过任务管理器结束),则会收到sqlite3错误(sqlite3.OperationalError:数据库已锁定)。我想这是因为在应用程序关闭之前,我没有正确关闭数据库连接。我已经试过了: connectio…

Python-Excel导出 - python

我有以下代码:import pandas as pd import requests from bs4 import BeautifulSoup res = requests.get("https://www.bankier.pl/gielda/notowania/akcje") soup = BeautifulSoup(res.cont…

Python:传递记录器是个好主意吗? - python

我的Web服务器的API日志如下:started started succeeded failed 那是同时收到的两个请求。很难说哪一个成功或失败。为了彼此分离请求,我为每个请求创建了一个随机数,并将其用作记录器的名称logger = logging.getLogger(random_number) 日志变成[111] started [222] start…

Python pytz时区函数返回的时区为9分钟 - python

由于某些原因,我无法从以下代码中找出原因:>>> from pytz import timezone >>> timezone('America/Chicago') 我得到:<DstTzInfo 'America/Chicago' LMT-1 day, 18:09:00 STD…

用大写字母拆分字符串,但忽略AAA Python Regex - python

我的正则表达式:vendor = "MyNameIsJoe. I'mWorkerInAAAinc." ven = re.split(r'(?<=[a-z])[A-Z]|[A-Z](?=[a-z])', vendor) 以大写字母分割字符串,例如:'我的名字是乔。 I'mWorkerInAAAinc”变成…