我已经在这里工作了好几个小时,无法弄清楚我的方法有什么问题。我尝试使用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)
我收到上面提到的以下错误。
我的驱动程序设置有问题吗?我已经和司机设置摔跤了几天,并且认为我已经击败了它。
非常感谢任何帮助。
答案 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
希望这有帮助!