如何从sqlalchemy中的查询中获取列表[重复]

Posted

技术标签:

【中文标题】如何从sqlalchemy中的查询中获取列表[重复]【英文标题】:How to get a list from query in sqlalchemy [duplicate] 【发布时间】:2013-12-27 22:29:52 【问题描述】:

当我使用 sqlalchemy 在 python 中执行以下操作时

someVar = self.session.query(sometable.someVar).group_by(sometable.someVar).all()

我得到一个变量元组的列表,例如

[(var1,), (var2,), ..]

有没有办法在 sqlalchemy 中获取平面列表。 我知道如何在 python 代码中展平元组列表,但该解决方案有点笨拙。 我只是想知道这是否可能。 我的目标是从 sometable 中获取不同条目 someVar 的列表。

【问题讨论】:

跟随扁平化笨拙如何? someVarFlat = [var[0] for var in someVar]?不,没有办法直接在 sqlalchemy 查询中执行此操作。 货车,我做到了。这并不笨拙,但我想知道是否可以在炼金术中做到这一点。 【参考方案1】:

我使用(在 @classmethod 中 - 这就是为什么 cls 实例在这里;我还在类属性中添加了“会话”=)

list(session.query(cls))

准确返回所有 DeclarativeBase 实例的简单列表。

【讨论】:

我认为你的麻烦是因为 group_by 方法。我使用 pythonic 机制来过滤带有 filter() 函数的序列,而不是集成在 SqlAlchemy 中。它不是很有效,但我这样做是因为一些向后兼容的原因。这里似乎是合理的方法。

以上是关于如何从sqlalchemy中的查询中获取列表[重复]的主要内容,如果未能解决你的问题,请参考以下文章

从列表中过滤为查询字符串 postgresql flask sqlalchemy [重复]

SQLAlchemy中的PostgreSQL RAW查询[重复]

如何从python中的列表中获取最后一个数字[重复]

如何在 sqlalchemy 中执行 LIKE 查询?

如何从java中的列表中获取最近的纬度经度[重复]

SQLAlchemy:排除从查询的子查询中获取的行