【问题标题】:Exporting SQL query results to pandas dataframe将 SQL 查询结果导出到 pandas 数据框
【发布时间】:2017-08-26 09:08:01
【问题描述】:
id    date       temp       prcp
1   2015-01-01  -27.18      0
1   2015-01-02  -25.9       1.03
1   2015-01-03  -17.89      9.44
1   2015-01-04  -17.89      9.44
1   2015-01-05  -17.89      9.44

import dataset
import pandas as pd

db = dataset.connect(path_to_database_on_AWS)
res = db.query(SELECT * FROM tbl WHERE id=1 and date >= '2015-01-03' and date <= '2015-01-05')
pd.read_sql(res, con=db)

在上面的代码中,我使用 python 数据集库中的query 方法从表中读取,然后想将结果导出为 pandas 数据框,但是,我得到了这个错误:

*** AttributeError: 'Database' object has no attribute 'cursor'

如何将查询结果导出到 pandas 数据框?

【问题讨论】:

  • 这里的db 是什么?你能展示它是如何创建的吗?通常会调用 .execute() 方法,而不是 .query()
  • pandas.read_sql
  • 感谢@bernie,我正在使用数据集库中的查询方法:dataset.readthedocs.io/en/latest/…。此外,添加了代码以显示我如何使用 python 数据集库连接到数据库
  • .read_sql() 不支持该库。您是否可以使用其他方式来执行您的查询?
  • 感谢@bernie,它是基于SQL Alchemy 构建的,read_sql() 不支持吗?

标签: python pandas dataset


【解决方案1】:

你可以这样做:

   import sqlite3
   import pandas as pd
   con = sqlite3.connect('path_to_your_sql')
   myFrames = pd.read_sql_query('your query', con)

编辑:对于非 sqlite db,您可以将其用于连接:

from sqlalchemy import create_engine
con = create_engine('dialect+driver://username:password@host:port/database')

docs for create_engine

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-12-28
    • 2023-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多