在Python或Boo中可以做类似LINQ的查询吗?
假设你有一个简单的 C# LINQ 查询,想象一下 db.Numbers 是一个 SQL 表格,里面只有一列叫 Number:
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 一样高效的东西呢?(我现在在比较 Python、IronPython 和 Boo,所以任何一种语言都能用的答案都可以。)
相关问题:
6 个回答
5
仔细看看 SQLAlchemy。这个工具可能能满足你大部分的需求。它让你可以用Python的语法来写普通的SQL,而这些SQL代码是在服务器上运行的。
7
在sqlalchemy中,sqlsoup 是我认为在Python中能给你最快解决方案的工具,如果你想要一个比较简单的一行代码。你可以去看看那个页面。
它应该是类似这样的...
result = [n.Number for n in db.Numbers.filter(db.Numbers.Number < 5).all()]