python - 高效查询多列 SQLAlchemy ORM

标签 python python-3.x orm sqlalchemy

我正在尝试使用 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/

相关文章:

python - @ 用于 matmul/inner,什么用于外积?

python - 如何在大型 python 代码库中用一个制表符替换四个空格?

python - 如何在 Python 中将用户输入格式化为 f 字符串?

orm - SQLAlchemy:提交后访问 Model.id 时出现 ObjectDeletedError,为什么?

Python线程,线程不关闭

python-3.x - 如何在单次调用时向 AWS Sagemaker Endpoint 发送多个请求?

python - 在 Django 中修改旧的迁移文件是否正确?

c# - Dapper 通过代码 : Multi-Mapping with repeating column names 进行映射

python - 在 python 中创建一个数据库中立的应用程序

python - 我想打乱这些变量,然后将它们组合到另一个函数中以将图像打印到屏幕上