【发布时间】:2021-08-30 12:38:36
【问题描述】:
我想使用 SQLAlchemy 和 Pandas 使用 read_sql_table() 将 Posgresql 数据库中的表读入 Pandas 数据帧。对数据库的 SQL 查询类似于:
SELECT col1,col2 FROM my_table WHERE col1=='value'
我尝试使用此代码从表中获取 Pandas 数据框:
from sqlalchemy import create_engine
db_uri = environ.get('SQLALCHEMY_DATABASE_URI')
engine = create_engine(db_uri, echo=True)
table_df = pd.read_sql_table(
'my_table',
con=engine,
schema="public"
columns=['col1','col2'])
此代码有效,但我如何应用条件,类似于 SQL 查询中的 WHERE,并根据该条件过滤数据框? 我不想先在内存中加载数据帧,我想在查询数据库时这样做。
【问题讨论】:
-
使用
read_sql_query()并将包含 WHERE 子句的 SELECT 语句传递给它。 -
@GordThompson 谢谢!我最终使用了 read_sql_query。但是我仍然对避免编写任何 SQL 代码的方法感兴趣。
-
您的意思是使用 SQLAlchemy 的 SQL 表达式语言创建查询,例如
qry = team.select().where(team.c.id == 1),然后将其传递给pd.read_sql_query(qry, engine)?是的,你可以这样做。
标签: python sql pandas sqlalchemy