有没有办法使用pandas语法查询postgresql数据库?

时间:2016-02-25 22:35:12

标签: pandas

是否有某种适配器允许查询postgresql数据库,就像它是一个pandas数据帧一样?

2 个答案:

答案 0 :(得分:4)

更新(2016年3月16日)

这是可能的,但你必须有一个编译器,它会评估你的查询并将其转换为SQL子句。

事实上,SQL是一种更高级别的语言,并且DBMS不仅解释了查询的SQL子句,而且解释了数据及其分布,这使得这很难实现。

Wes McKinney正在尝试使用Ibis projecta nice writeup about some of the challenges进行此操作。

上一篇文章

不幸的是,这是不可能的,因为SQL是比Python更高级的语言。

使用pandas,您可以指定要执行的操作的内容和方式,而使用SQL,您只需指定所需内容。然后SQL服务器可以自由决定如何提供查询。向表中添加索引时,SQL Server可以使用该索引更快地为您的查询提供服务,而无需重写查询。

如果您指示数据库如何执行查询,那么如果您希望它们使用索引,您还需要重写SQL语句。

话虽这么说,我通常使用神经网络分析中的模式进行分析,使用SQL执行初始聚合(并减少数据大小),然后在pandas中执行其他操作。

答案 1 :(得分:1)

不确定这是否正是您想要的,但您可以将postgres表加载到pandas中并从那里操作它们。

http://pandas.pydata.org/pandas-docs/stable/generated/pandas.read_sql.html http://docs.sqlalchemy.org/en/latest/dialects/postgresql.html

从上面引用的页面无耻地窃取:

import pandas
from sqlalchemy import create_engine

engine = create_engine(
   'postgresql+pg8000://scott:tiger@localhost/test',
    isolation_level='READ UNCOMMITTED'
)
df = pandas.read_sql('SELECT * FROM <TABLE>;' con=engine)