Есть ли какой-либо LINQ-подобный проект для Python, который может автоматически запрашивать файлы XML и/или таблицы РСУБД? Синтаксис не должен быть точно таким же, как LINQ в С#, но, надеюсь, он будет закрыт путинским способом.
LINQ в Python
Ответ 1
Pynq реализует деревья выражений:
http://wiki.github.com/heynemann/pynq
Microsoft создала Linq (Language Integrated Query) с использованием деревьев выражений, которая представляет собой математическую концепцию о том, как анализировать операции с деревьями таким образом, чтобы вы могли анализировать операции независимо от результата.
Pynq - это реализация в Python теории дерева выражений и некоторых поставщиков. Постепенно будет больше поставщиков, но Pynq будет стремиться сделать так просто, насколько возможно, написать своего собственного провайдера.
Ответ 2
В соответствии с этой статьей Python не нуждается в эквиваленте LINQ, он уже имеет его:
http://sayspy.blogspot.com.au/2006/02/why-python-doesnt-need-something-like.html
Также см. это:
Ответ 3
Если вы ищете ORM, тогда SQLAlchemy
Ответ 4
Я еще не использовал его, но это показывает обещание:
asq - это простая реализация API с поддержкой LINQ для Python, который работает с итерами Python, включая параллельную версию, реализованную с точки зрения стандартной библиотеки Python многопроцессорный модуль. Соответствие API имеет эквивалентность с LINQ для объектов, 100% -ное покрытие тестовых отчетов и полную документацию.
Ответ 5
Если вы ищете межязычный LINQ, место, в котором оно происходит, находится в Reactive Extensions, который Microsoft реализует в Python, Ruby, javascript и т.д. Для этого требуется LINQ, поэтому они обычно в конечном итоге реализуют операторы Linq;)
- Официальная версия Python находится здесь: https://rxpy.codeplex.com/
- Но здесь есть другой порт: http://akuendig.github.io/RxPython/
Ответ 6
Я думаю, 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)
Ответ 7
Просто для удовольствия я создал следующий код.
"""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']
Ответ 8
Я не знаю много о Linq, но вам может быть интересно:
http://code.activestate.com/recipes/442447/
Он позволяет использовать выражения генератора для запроса базы данных SQL.
Ответ 9
Вы можете посмотреть на kalamar: http://dyko.org/api/kalamar.html
Это унифицированная библиотека доступа к данным, использующая синтаксис, более или менее похожий на linq для доступа к данным, хранящимся в разных форматах (xml, mp3,...) на гетерогенных бэкэндах (файлы, sql,...).
Ответ 10
Мы запускаем PythonQL, который в основном LINQ для Python на стероидах (ну, может быть, витамины). Это расширение для грамматики Python, но (drumrolls) вы можете установить его через pip, и он не сломает существующий код:) Проверьте это: www.pythonql.org