是否有任何可以自动查询XML文件和/或RDBMS表的Python类似于LINQ的项目?该语法不一定非常像C#中的LINQ,但希望以pythonic的方式关闭。LINQ in Python
回答
如果你正在寻找一个ORM再有就是SQLAlchemy
Pynq实现表达式树:
http://wiki.github.com/heynemann/pynq
微软创建使用表达式树的LINQ(语言集成查询),这是一种关于如何将操作解析到树中的数学概念,以便您可以独立于结果分析操作。
Pynq是表达式树理论和一些提供者的Python实现。逐渐会有更多的提供商,但Pynq将努力使自己的提供商尽可能地容易编写。
声音很酷。 8年未触及。 – Robino 2017-03-15 11:14:51
你可能想看看kalamar:http://dyko.org/api/kalamar.html
它是利用语法或多或少类似于LINQ访问存储在不同格式数据的统一数据访问库(XML,MP3,...)上异构后端(文件,sql,...)。
我还没有使用它,但是这表明承诺:
asq是一个简单的实施Python中的LINQ风格的API,它工作在Python的iterables,包括在以下方面实现并行版本的Python标准库多处理模块。 API体育功能与对象的LINQ等同,100%声明测试覆盖率和comprehensive documentation。
2012年在Google Code上打开了一个问题,2015年7月迁移到GH,未于2017年7月解决https://github.com/sixty-north/asq/issues/5 – scls 2017-07-01 21:21:27
@scls rob-smallshire为您提供了答案并关闭了问题 – 2017-09-07 16:59:38
我觉得Pony 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)
如果您正在寻找跨语言的LINQ,它的发生地点是在Reactive Extensions其中微软正在实施Python,Ruby,JavaScript等。这需要LINQ,所以他们通常最终会首先执行LINQ运算符;)
- 官方Python版本是在这里:https://rxpy.codeplex.com/
- 但这里还有另外一个端口:http://akuendig.github.io/RxPython/
只是为了好玩我创建了以下代码。
"""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']
我们推出PythonQL,这基本上是LINQ的Python类固醇(好吧,也许维生素)。它是Python语法的扩展,但是(drumrolls)你可以通过pip来安装它,它不会破坏任何现有的代码:)检查出来:www.pythonql.org
- 1. LINQ to SQL in and not in
- 2. LINQ-to-SQL IN()
- 3. Foreach in Linq
- 4. Vector3 in Meep in Python
- 5. linq in或包含?
- 6. OrderBy in LINQ to Entity
- 7. LINQ to SQL WHERE“IN”
- 8. Linq SelectMany in Entity Framework
- 9. Signin in Linq to Sql?
- 10. SelectMany in Linq to entity
- 11. LINQ的。载或IN
- 12. Linq查询中的'IN'和'NOT IN'
- 13. LINQ - SELECT DISTINCT与NOT IN
- 14. LINQ to SQL - How to“Where ... in ...”
- 15. orderby Count(other_table)in linq查询
- 16. 多对多LINQ“IN”查询
- 17. LINQ的NOT IN子句?
- 18. LINQ to Objects - NOT IN查询
- 19. var in linq的使用
- 20. 'Random'Orderby in webservice using LINQ To Entities
- 21. group by select max in linq
- 22. StartsWith string.empty in linq查询
- 23. in linq中的条款
- 24. 如何使用Linq“NOT IN”
- 25. LINQ风味IS IN查询
- 26. “Where In”with linq to sql
- 27. DefaultIfEmpty - LINQ to SQL vs In Memory
- 28. Linq vb.net - 其中X IN(SELECT ...)
- 29. __rlshift__,__ror__ in Python
- 30. Quicksort in place Python
请注意,有[pyquery](http:// pypi .python.org/pypi/pyquery),一个像Python一样的jquery-syntax /功能包。 – user712092 2011-08-30 16:27:45
py-enumerable/py_linq https://github.com/viralogic/py-enumerable可以帮助 – scls 2017-07-01 21:16:44