无法从Python

时间:2015-06-23 20:50:16

标签: python sql-server macos pyodbc freetds

我的Python代码:

import pyodbc
cnxn = pyodbc.connect('DRIVER=FreeTDS;DSN=S29;UID=test;PWD=test;TDS_Version=8.0;ClientCharset=UTF8')
cursor = cnxn.cursor()
cursor.execute("select user_id, user_name from users")
rows = cursor.fetchall()
for row in rows:
  print row.user_id, row.user_name

获取错误:

Traceback (most recent call last):
File ".../test_mssql_connect.py", line 4, in <module>
cnxn = pyodbc.connect('DRIVER=FreeTDS;DSN=S29;UID=test;PWD=test;TDS_Version=8.0;ClientCharset=UTF8')
pyodbc.Error: ('HY000', '[]  (20013) (SQLDriverConnect)')

我找不到相关信息,这是什么错误(&#39; HY000&#39;,&#39; [](20013)(SQLDriverConnect)&#39;)以及如何解决它。

同时通过 tsql osql isql 我成功连接到基地

我的 odbc.ini

[S29]
Driver=FreeTDS
Description=S29
ServerName=192.168.0.29
Database=test
UID=test
PWD=test
TDS_Version=8.0

我的 odbcinst.ini

[FreeTDS]
Description=FreeTDS
Driver=/usr/local/Cellar/freetds/0.95.1/lib/libtdsodbc.so
Setup=/usr/local/Cellar/freetds/0.95.1/lib/libtdsodbc.so
UsageCount=2
CPTimeout =
CPReuse =
TDS Version = 8.0
client charset = utf-8

我的 freetds.conf

[global]
tds version = 8.0
[192.168.0.29]
host = 192.168.0.29
port = 1433
tds version = 8.0
[S29]
host = 192.168.0.29
port = 1433
tds version = 8.0

2 个答案:

答案 0 :(得分:0)

你的freetds.conf设置了什么?请注意,您很可能希望使用TDS版本7.3,但我不认为这是问题所在,尽管它可能是,因为它默认为TDS版本7.1。有关FreeTDS支持的TDS版本号的文档:

http://www.freetds.org/userguide/choosingtdsprotocol.htm

您可能必须提供端口号,但没有看到您的freetds.conf DSN设置,很难说。没有Python的DSN,我运气好了。由于8.0不是有效的TDS版本,我将为您提供适合我的完整示例:

freetds.conf:

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

ODBC.INI:

[examplesql]
Driver = FreeTDS
Server = examplesql.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

pyodbc connect,DSN free:

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

您必须修改odbcinst.ini以指向您的司机所在的位置。一些注释:

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

请点击此处了解更多信息:

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

祝你好运。

答案 1 :(得分:0)

我重新安装 pyodbc ,现在可以使用了。 我在这里下载https://github.com/juztin/pyodbc

ng-repeat