我在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”变成…