Превратить список связанных табличных объектов (SQLAlchemy) в кадр данных pandas - PullRequest
0 голосов
/ 05 июня 2019

У меня есть база данных, которая была определена с помощью SQLAlchemy ORM. Теперь у меня есть связь между таблицами (скажем, parents между таблицами Parent и Child), к которой я могу получить доступ и получить объекты строк, связанные с этой записью (2 родительских объекта, связанных с одним дочерним объектом). Теперь я хочу вернуть фрейм данных, содержащий все родительские объекты, связанные с этим дочерним объектом.

Я знаю, что есть метод pd.read_sql, но он работает только с запросами, а не со списком объектов таблицы. Конечно, я могу просто сделать команду SQL-запроса, которая выбирает только тех родителей, которые связаны с этим child_id, но это кажется мне излишним, потому что у меня уже есть информация, какие родители принадлежат этому ребенку. Есть ли простой и эффективный способ превращения этих родительских объектов в один родительский фрейм данных?

from sqlalchemy import  (Column, Integer, ForeignKey)
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import relationship
import pandas as pd

Base = declarative_base()


class Parent(Base):
    __tablename__ = 'parent'
    id = Column(Integer, primary_key=True)
    child_id = Column(Integer, ForeignKey('child.id'))
    child = relationship("Child", backref="parents")

class Child(Base):
    __tablename__ = 'child'
    id = Column(Integer, primary_key=True)


p1 = Parent()
p2 = Parent()
c1 = Child()
c1.parents.append(p1) 
c1.parents.append(p2)

# this does not work:
pd.read_sql(c1.parents, someengine)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...