Выберите данные с помощью SQLAlchemy до pandas после объявления таблицы - PullRequest
0 голосов
/ 07 января 2020

Я пробую приведенный ниже код, но я получаю сообщение об ошибке при загрузке данных на фрейм данных. Я думаю, это потому, что я объявил таблицу как класс:

def get_task_products(task_id):
    before = time.time()
    session = get_new_session()

    persisted_task_products =session.query(TaskProducts). \
        filter(TaskProducts.task_id == task_id). \
        options(load_only(TaskProducts.product_id)).all()
    df = pd.DataFrame(persisted_task_products)
    df.columns = persisted_task_products[0].keys()
    print_debug(
        'db_manager.persisted_motionlesstime: query result (after {0} seconds) : {1})'. \
            format(time.time() - before, df))

    if not df or len(df) != 0:
        return df
    session.close()

Объявление таблицы:

class TaskProducts(Base):
    __tablename__ = 'task_products'

    id = Column(BigInteger, autoincrement=True, primary_key=True)
    task_id = Column(Integer, nullable=False)
    product_id = Column(Integer, nullable=False)

    def __repr__(self):
        return """
            <TaskProducts
            (
            id=%s, task_id=%s, product_id=%s
            )>""".replace(" ", "").replace("\n", " ") % (
            self.id, self.task_id, self.product_id
        )

, но я получил ошибку

 df.columns = persisted_task_products[0].keys()
AttributeError: 'TaskProducts' object has no attribute 'keys'

Как мог Я решил эту проблему?

...