python - 我可以在没有 for 循环的情况下搜索对象列表中的项目吗?

标签 python sqlalchemy

不确定这是否可能,但我使用的是 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/

相关文章:

Python请求和beautifulsoup4,仅收集 "href"链接

python - sqlalchemy: 'InstrumentedList' 对象没有属性 'filter'

python - 在渲染模板时如何引用 sqlalchemy 中的自定义字段?

python - SQL炼金术 : How to bulk update values from a list of dicts

python - 数据集映射表中的 Tensorflow 特征列已初始化问题

python - 后验概率 python 示例

python - 无法在Python中将矩阵追加到数组

python - 为什么我的 RSA 代码中的加密/解密不起作用?

python - 在 flask 和其他应用程序之间共享 sqlalchemy 模型

python - 如何访问与异步 sqlalchemy 的关系?