【发布时间】:2014-11-05 21:34:06
【问题描述】:
我已经为此工作了好几个小时,但无法弄清楚我的方法有什么问题。我正在尝试使用 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)
我收到上面提到的以下错误。
我的驱动程序设置有问题吗?几天来,我一直在努力解决驱动程序的设置问题,并认为我已经成功了。
非常感谢任何帮助。
【问题讨论】:
-
请参阅此处docs.sqlalchemy.org/en/rel_0_9/dialects/…,了解有关使用 sqlalchemy 连接到 sql server 的文档。似乎你应该能够做类似
create_engine("mssql+pyodbc://User:Password@MYDSN")的事情。 -
但是从错误信息看来,您的驱动程序有问题。你知道你用的是哪个驱动吗? (你在什么平台上?)
-
我在 OSX 上,相信我在使用 unixODBC。有没有办法从终端或 python 中检查?
-
好的,我刚刚尝试使用您建议的 create_engine 信息,我想我已经克服了那个错误! (这很重要!)现在看来我没有正确引用数据库和表。那应该在MYDSN之后吗?像这样:
create_engine("mssql+pyodbc://User:Password@MYDSN/Database") -
您需要知道的是您安装了 unixODBC 用于连接 SQL Server(例如 FreeTDS)的驱动程序
标签: python pandas sql-server-2012 sqlalchemy pyodbc