【问题标题】:Error when trying to import from Database with Pandas and SQLAlchemy尝试使用 Pandas 和 SQLAlchemy 从数据库导入时出错
【发布时间】:2015-04-21 01:00:09
【问题描述】:

我正在使用可移植的 python 2.7.6.1,我想将一个查询从 oracle 数据库导入 python pandas。我搜索了几个示例并想出了以下代码:

from sqlalchemy import create_engine
import pandas as pd

engine = create_engine('oracle://user:pass@host:port/schema', echo=False)
df = pd.read_sql('select * from databasetable', engine, index_col = index)

print df.describe()

程序在“pd.read_sql”语句处停止,并显示以下错误消息:

AttributeError: 'module' object has no attribute 'read_sql'

数据库连接正常,根据示例,此代码应该可以正常工作。有人可以帮忙吗?

【问题讨论】:

  • 您的代码是否正确,create_engine 的参数中有双单引号也适用于您的 sql 语句,如果您传递原始字符串,它是否有效:df = pd.read_sql(r'select * from databasetable', engine, index_col = index)
  • “创建引擎”可以正常工作。我已经尝试了原始字符串,但我得到了同样的错误。感觉好像在熊猫中找不到“read_sql”。但这对我来说似乎很奇怪。

标签: python sql oracle pandas sqlalchemy


【解决方案1】:

pandas 模块从子模块中导入 read_sql;您可以尝试从子模块中获取它:

df = pd.io.sql.read_sql('select * from databasetable', engine, index_col = index)

您还可以打印pd.__dict__ 以查看pd 模块中的可用内容。如果您尝试使用pd 模块中的其他内容,例如pd.Series(),您会得到AttributeError 吗?

【讨论】:

  • 非常感谢。我已经检查了 pd.__dict__ 和 pandas-docs 上的版本。 --> 在我的 0.11.0 版中,'sql_read_frame' 似乎是要使用的命令,而在 0.15.0 版中,您可以使用 'read_sql' 读取 sql。
【解决方案2】:

非常感谢。 我已经检查了 pd.dict 和 pandas-docs 上的版本。 --> 在我的 0.11.0 版中,'sql_read_frame' 似乎是要使用的命令,而在 0.15.0 版中,您可以使用 'read_sql' 读取 sql

【讨论】:

    【解决方案3】:

    pandas 0.12.0中引入了pandas.io.sql.read_sql方法(发布日期:2013-07-24)。

    Change log:

    io API 更改:[…] 添加顶级 pd.read_sql 和 to_sql DataFrame 方法

    【讨论】:

      猜你喜欢
      • 2020-04-13
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-01-09
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多