python - 你能用 Python 或 Boo 之类的语言进行类似 LINQ 的查询吗?

标签 python linq linq-to-sql ironpython boo

采用这个简单的 C# LINQ 查询,想象一下 db.Numbers是一个包含一列 NumberSQL 表:

var result = 
    from n in db.Numbers
        where n.Number < 5
        select n.Number;

这将在 C# 中非常高效地运行,因为它生成一个 SQL 查询,类似于

select Number from Numbers where Number < 5 

没有做的是从数据库中选择所有数字,然后在C#中过滤它们,就像它可能出现的那样首先要做。

Python 支持类似的语法:

result = [n.Number for n in Numbers if n.Number < 5]

但它是 if这里的子句在客户端进行过滤,而不是在服务器端进行过滤,服务器端的效率要低得多。

Python 中是否有像 LINQ 这样高效的东西? (我目前正在评估 PythonIronPythonBoo 的对比,因此适用于任何这些语言的答案都很好。)

最佳答案

sqlsoup在 sqlalchemy 中为您提供了 python 中最快的解决方案,我认为如果您想要一个清晰的(ish)单衬里。看页面就知道了。

应该是这样的……

result = [n.Number for n in db.Numbers.filter(db.Numbers.Number < 5).all()]

关于python - 你能用 Python 或 Boo 之类的语言进行类似 LINQ 的查询吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/117732/

相关文章:

c# - 获取用于排序的自定义 linq lambda

c# - 如何使用基于键的linq更改字典的值?

sql - 在 SQL Server 2014 中写入基础表后立即查询 View

linq-to-sql - 动态存储过程名称linq to sql

python-docx-template docx 模板中出现意外字符

python - 在其内容循环中删除顺序NumPy数组索引

python - 布伦特里 + Python : Configure credential at transaction level rather than module

python - 代码运行良好,但我的数据库根本没有更改。(Python 中的 Json 到 SQLITE 数据库)

sql - 快速返回大型结果集的最佳策略

c# - 使用 LINQ to SQL 将具有外键的 Gridview 列排序到不同的实体