Sqlalchemy将标量对象转换为列表

时间:2012-01-05 10:53:31

标签: python orm sqlalchemy

您好我想将“filter()”方法返回的实例对象(标量对象)转换为列表。

是否可以获得类似于“all()”方法返回的列表的列表。

有没有方法?

2 个答案:

答案 0 :(得分:0)

运行查询时

In [3]: session.query(User).all()
2012-01-05 16:45:42,553 INFO sqlalchemy.engine.base.Engine BEGIN (implicit)
2012-01-05 16:45:42,554 INFO sqlalchemy.engine.base.Engine SELECT user.username AS user_username
FROM user

如果您运行过滤器错误

In [4]: session.query(MPA).filter(User.username=='test')
Out[4]: <sqlalchemy.orm.query.Query object at 0x25d12d0> 

因此,如果您想要列表,那么您可以使用此

In [5]: list (session.query(User).filter(User.username=='test'))

但在内部它会调用.all()方法。

答案 1 :(得分:0)

Query.filter(criterion)方法不返回实例对象。来自文档:

  

将给定的过滤条件应用于查询,返回新生成的Query

另一方面,

Query.all()返回结果。来自文档:

  

将此Query所代表的结果作为列表返回。


要解决您的任务,只需使用.all()filter添加my_session.query(...).filter(...).all() 执行查询:

{{1}}