【问题标题】:Reading table into pandas using sqlalchemy from SQL Server使用 SQL Server 中的 sqlalchemy 将表读入 pandas
【发布时间】: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


【解决方案1】:

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

我的连接字符串语法错误,当我从这里更改它时

connectionString = 'mssql+pyodbc://User:Password@IPAdress/Database'

到这里

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

成功了!

再次感谢您的帮助!

【讨论】:

    【解决方案2】:

    尝试像这样建立您的连接。您还需要一些参数。

    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

    希望这会有所帮助!

    【讨论】:

    • 问题是,OP 想要使用 pandas read_sql,为此需要一个 sqlalchemy 引擎。
    猜你喜欢
    • 2018-05-04
    • 1970-01-01
    • 2018-11-29
    • 2017-06-24
    • 2020-01-29
    • 1970-01-01
    • 2020-10-04
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多