我正在尝试使用 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)
但是它会抛出错误,因为它是一个字符串并且它无法识别它。
最佳答案
您可以尝试如下所述的变量解包机制:
session.query(*columns.values()).all()
还可以运行以下代码以进行更简单的说明。
Tuple = lambda *args: args
Dict = lambda **kwargs: kwargs
Print(Tuple(*columns))# PRINT KEYS
Print(columns.Keys())# PRINT KEYS
Print(Dict(**columns))# PRINT DICT ITEMS
Print(columns)# PRINT DICT ITEMS
关于python - 高效查询多列 SQLAlchemy ORM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59755291/