【发布时间】:2020-05-02 10:46:32
【问题描述】:
我正在尝试使用 SQL Alchemy 进行查询,但我想从包含大约 57 列的表中“选择”20 列,我知道这样做的方法是
session.query(Table.col1, Table.col2, Table.col3, Table.col4......).all()
但它的效率太低了,而且肯定有更好的方法来做到这一点。
我尝试不成功,但已经非常接近的是:
# "columns" is a dictionary that contains all the column names, it looks more or less like this (shorter version
columns = {"Account ID": "AR3",
"Account Origination Month": "AR55",
"Origination balance": "AR66",
"Product": "AR10",
"Repayment Type": "AR69",
"Original Loan Term (in months)": "AR61",
"Initial Product Term (in months)": "AR106",
"Initial rate/margin": "AR109",
"Initial Rate Type": "AR107",
"Reversion margin": "AR119",}
columns_sqla = ", ".join(["Table."+str(value) for key, value in columns.items()])
>>> columns_sqla
'BoE.AR3, BoE.AR55, BoE.AR66, BoE.AR10, BoE.AR69, BoE.AR61, BoE.AR106, BoE.AR109, BoE.AR107, BoE.AR119'
然后我做:
session.query(columns_sqla)
但它会抛出错误,因为它是一个字符串并且它无法识别它。
【问题讨论】:
-
第一种方法效率低怎么办?也许很麻烦,但它应该表现得很好。
-
因为您不会手动输入 20 列,所以效率会很低,对吧?
标签: python python-3.x orm sqlalchemy