SQLAlchemy ORM转换为Pandas DataFrame与Bigquery

9 浏览
0 Comments

SQLAlchemy ORM转换为Pandas DataFrame与Bigquery

扩展这个问题,该问题描述了如何使用ORM中的pandas.read_sql函数直接在pandas DataFrame中获取查询结果的过程。

我希望能够在使用SQLAlchemy和pybigquery时做到完全相同的事情。

首先,我这样定义我的会话:

from sqlalchemy import
from sqlalchemy.orm import scoped_session, sessionmaker
db_uri = "bigquery://myproject/"
engine = create_engine(db_uri)
session = scoped_session(sessionmaker(bind=engine))

然后,我可以从ORM的Item中请求:

session.query(Item).first()

如果我通过pandas.read_sql调用经典的SQL数据库,我只需执行以下操作:

query = session.query(...)
df = pandas.read_sql(query.statement, session.query.bind)

天真地,我尝试了以下操作:

pandas.read_bgq(query.statement)

但是这返回了TypeError: Object of type 'Select' is not JSON serializable

是否有一种方法可以像对待经典的SQL数据库一样直接将bigquery请求到pandas dataframe中?

0
0 Comments

SQLAlchemy是一个Python的ORM(对象关系映射)库,可以用来操作关系型数据库。Pandas是一个数据分析库,可以用来处理和分析数据。本文将讨论如何将SQLAlchemy的ORM查询结果转换为Pandas的DataFrame,并使用Bigquery进行示例。

问题的出现是希望将SQLAlchemy的ORM查询结果转换为Pandas的DataFrame,但是直接使用pandas.read_sql无法正常工作。需要找到原因并提供解决方法。

解决方法是使用SQLAlchemy的查询语句和pandas.read_sql函数结合来实现转换。具体步骤如下:

1. 首先创建一个SQLAlchemy的查询对象:query = session.query(...)

2. 然后使用查询对象的statement属性获取查询语句:query.statement

3. 最后使用pandas.read_sql函数来执行查询语句并将结果转换为DataFrame:df = pandas.read_sql(query.statement, session.query.bind)

这样就可以将SQLAlchemy的ORM查询结果转换为Pandas的DataFrame了。

下面是示例代码:

# 导入所需的库
from sqlalchemy import create_engine
import pandas as pd
# 创建一个SQLAlchemy的引擎
engine = create_engine('bigquery://project_id')
# 创建一个SQLAlchemy的会话
session = Session(bind=engine)
# 创建一个SQLAlchemy的查询对象
query = session.query(...)
# 使用查询对象的statement属性获取查询语句
sql_query = query.statement
# 使用pandas.read_sql函数执行查询语句并将结果转换为DataFrame
df = pd.read_sql(sql_query, session.query.bind)

通过以上步骤,我们成功将SQLAlchemy的ORM查询结果转换为了Pandas的DataFrame,并使用了Bigquery作为示例。这样我们就可以方便地使用Pandas对查询结果进行数据分析和处理了。

0