使用SQL Server中的sqlalchemy将表读入pandas

时间:2014-11-05 21:34:06

标签: python pandas sql-server-2012 sqlalchemy pyodbc

我已经在这里工作了好几个小时,无法弄清楚我的方法有什么问题。我尝试使用sqlalchemy(来自SQL Server 2012实例)将表读入pandas并收到以下错误:

DBAPIError: (Error) ('01000', "[01000] [unixODBC][Driver Manager]Can't open lib 'SQL Server' : file not found (0) (SQLDriverConnect)") None None

我使用以下代码:

import sqlalchemy as sql

from sqlalchemy import create_engine

import pyodbc

pyodbc.connect('DSN=MYDSN;UID=User;PWD=Password')

返回:

<pyodbc.Connection at 0x10a26a420>

我觉得这很好。然后当我运行以下内容时:

connectionString = 'mssql+pyodbc://User:Password@IPAdress/Database'
engine = sql.create_engine(connectionString)

pd.read_sql("ecodata", engine)

我收到上面提到的以下错误。

我的驱动程序设置有问题吗?我已经和司机设置摔跤了几天,并且认为我已经击败了它。

非常感谢任何帮助。

2 个答案:

答案 0 :(得分:3)

为了记录,joris想出了我的问题的答案:

我的连接字符串语法错误,当我从这个

更改它时
connectionString = 'mssql+pyodbc://User:Password@IPAdress/Database'

到这个

connectionString = 'mssql+pyodbc://User:Password@IPAddress:Port/Database?driver=FreeTDS'

有效!

再次感谢您的帮助!

答案 1 :(得分:0)

尝试像这样形成你的连接。您还需要更多参数。

con = pyodbc.connect('DRIVER={FreeTDS};SERVER="yourserver";PORT=1433;DATABASE=yourdb;UID=youruser;PWD=yourpassword;TDS_Version=7.2;')

确定要使用的TDS版本:

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

希望这有帮助!