Python中的LINQ
是否有任何可以自动查询XML文件和/或RDBMS表的类似LINQ的Python项目? 在C#中,语法不一定非常像LINQ,但希望以pythonic的方式closures。
Pynq实现expression式树:
http://wiki.github.com/heynemann/pynq
Microsoft使用Expression树创build了Linq(语言集成查询),这是一个关于如何将操作parsing为树的math概念,以便您可以独立于结果分析操作。
Pynq是Expression Tree理论和一些提供者的Python实现。 逐渐会有更多的提供商,但是Pynq会努力使自己的提供商尽可能地容易。
根据这篇文章,Python不需要相当于LINQ,它已经有了它:
http://sayspy.blogspot.com.au/2006/02/why-python-doesnt-need-something-like.html
也看到这个:
http://web.archive.org/web/20120701011507/http://www.codebadger.com/blog/post/2009/06/01/Pythone28099s-LINQ-Equivalents-e28093-filter%28%29-map% 28%29和列表comprehension.aspx
如果你正在寻找一个ORM,那么就是SQLAlchemy
我还没有使用它,但是这显示了承诺:
asq是Python的一个简单的LINQ启发式API实现,可以在Python迭代器上运行,包括一个按照Python标准库多处理模块实现的并行版本。 API体育function与对象的LINQ相当,100%的语句testing覆盖率和全面的文档 。
如果你正在寻找跨语言的LINQ,它发生的地方是微软用Python,Ruby,javascript等实现的Reactive Extensions 。这需要LINQ,所以他们通常最终首先实现Linq操作符;)
- 官方的Python版本在这里: https : //rxpy.codeplex.com/
- 但是这里还有另一个端口: http : //akuendig.github.io/RxPython/
我认为应该在这里提到小马ORM 。 对我来说,这是 LINQ:
q = select((p.name, p.price) for p in Product) q2 = q.filter(lambda n, p: n.name.startswith(“A”) and p > 100)
或直接从他们的登陆页面:
select(c for c in Customer if sum(c.orders.price) > 1000)
只是为了好玩,我创build了下面的代码。
"""This module provides linq-like extensions for some common data structures""" import __builtin__ class extlist(list): """subclass of list""" def where(self, condition): return extlist(filter(condition, self)) def aggregate(self, condition): return extlist(reduce(condition, self)) def select(self, condition=lambda x: x): return extlist(map(condition, self)) __builtin__.list = extlist class extstr(str): """subclass of str""" def where(self, condition): return extstr(filter(condition, self)) def aggregate(self, condition): return extstr(reduce(condition, self)) def select(self, condition=lambda x: x): return extstr(map(condition, self)) __builtin__.str = extstr
用法
a = list('apple') a.where(lambda u: u == 'p').select(lambda x: x.upper())
['P','P']
你可能想看看kalamar: http ://dyko.org/api/kalamar.html
它是一个统一的数据访问库,使用与linq相似的语法来访问异构后端(文件,sql,…)上以不同格式(xml,mp3,…)存储的数据。
我们启动PythonQL,这基本上是类固醇上的Python的LINQ(也许维生素)。 它是对Python语法的扩展,但是(drumrolls)你可以通过pip来安装它,并且不会破坏任何现有的代码:)检查一下: http://www.pythonql.org
- 我应该使用YUI Compressor还是新的Google Closure编译器来压缩我的JavaScript?
- 这个错误是什么意思:“错误:在'type_name'之前预期说明符 – 限定符列表”?
- 我怎样才能过滤使用LINQ的字典,并将其返回到相同types的字典
- 使用Enumerable.Empty <T>()而不是新的List <T>()初始化IEnumerable <T>会更好吗?
- 在LINQ中展开列表
- 使用entity framework进行unit testing
- Find()和First()抛出exception,如何返回null?
- 如何使用LINQ获取索引?
- 如何构造一个LINQ to Entities查询来直接加载子对象,而不是调用Reference属性或Load()
- 使用LINQ在C#中对列表进行sorting
- entity framework – “无法创buildtypes'闭包types'…”的错误的常量值