是否有某种适配器允许查询postgresql数据库,就像它是一个pandas数据帧一样?
答案 0 :(得分:4)
更新(2016年3月16日)
这是可能的,但你必须有一个编译器,它会评估你的查询并将其转换为SQL子句。
事实上,SQL是一种更高级别的语言,并且DBMS不仅解释了查询的SQL子句,而且解释了数据及其分布,这使得这很难实现。
Wes McKinney正在尝试使用Ibis project并a 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)