不确定这是否可能,但我使用的是 sqlalchemy,我的查询将所有项目作为对象返回。我想在该对象列表中搜索项目,但不必每次都执行 for 循环。
这是我目前知道的方法:
for x in objects_from_query:
print x.name, ' - ', x.age
如果我想知道我的列表中是否有名为“bob”的用户的数据,我必须:
for x in objects_from_query:
if x.name == 'bob':
print 'bob exists!'
因为我必须经常这样做,所以我想知道是否有更快的方法来查找 bob 是否存在而不必每次都执行 for 循环?通常对于列表,我会做一些类似 objects_from_query.index("bob") 的事情,但是当它不是一个普通的列表,而是一个对象列表时,是否有类似的事情?
最佳答案
如果您使用的是 sqlalchemy,则可以使用 .filter
Query 上的方法对象,将 SQL 转换为 where 子句。像下面这样的东西会起作用:-
import sqlalchemy as sql
session = sql.orm.sessionmaker( bind=sql.create_engine( 'sqlite:///sql.db' ) )
Bob = session.query( Names ).filter( Names.name == "bob" )
关于python - 我可以在没有 for 循环的情况下搜索对象列表中的项目吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11596002/