有没有一种方法可以使用pandas语法查询postgresql数据库?

有没有一种方法可以使用pandas语法查询postgresql数据库?,pandas,Pandas,是否有某种适配器允许查询postgresql数据库,就像查询pandas数据帧一样?不确定这是否正是您想要的,但您可以将postgres表加载到pandas中并从那里操作它们 不知羞耻地从上面提到的页面中盗取: import pandas from sqlalchemy import create_engine engine = create_engine( 'postgresql+pg8000://scott:tiger@localhost/test', isolation

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

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

不知羞耻地从上面提到的页面中盗取:

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)
导入熊猫
从sqlalchemy导入创建引擎
引擎=创建引擎(
'postgresql+pg8000://斯科特:tiger@localhost/测试',
隔离级别=“读取未提交”
)
df=pandas.read_sql('SELECT*FROM;'con=engine)
更新(2016年3月16日)

这是可能的,但您必须有一个编译器,它对您的查询求值并将其转换为SQL子句

SQL是一种更高级的语言,而且DBMS不仅解释查询,而且还解释数据及其分布的SQL子句,这一事实使得执行SQL语句非常困难

韦斯·麦金尼(Wes McKinney)正试图和他一起做这件事


以前的帖子

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

使用pandas可以指定要做什么以及如何做,而使用SQL只能指定要做什么。然后,SQL server可以自由决定如何为您的查询提供服务。当您向表中添加索引时,SQL server可以使用该索引更快地为您的查询提供服务,而无需重写查询

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



也就是说,我通常使用neurite的答案中的模式进行分析,使用SQL执行初始聚合(并减少数据大小),然后在pandas中执行其他操作。

您可以将postgresql表(或从这个意义上说,是SQL查询的结果)读入数据帧中。这就是你想要的吗?或者您正在寻找完全避免SQL的东西。谢谢,但是表太大了,无法加载到内存中(而且近期内不打算将其移动到hd5类型的存储)。我要找的是一个直接与数据库交互的界面。