Подтвердить что ты не робот

LINQ в Python

Есть ли какой-либо LINQ-подобный проект для Python, который может автоматически запрашивать файлы XML и/или таблицы РСУБД? Синтаксис не должен быть точно таким же, как LINQ в С#, но, надеюсь, он будет закрыт путинским способом.

4b9b3361

Ответ 1

Pynq реализует деревья выражений:

http://wiki.github.com/heynemann/pynq

Microsoft создала Linq (Language Integrated Query) с использованием деревьев выражений, которая представляет собой математическую концепцию о том, как анализировать операции с деревьями таким образом, чтобы вы могли анализировать операции независимо от результата.

Pynq - это реализация в Python теории дерева выражений и некоторых поставщиков. Постепенно будет больше поставщиков, но Pynq будет стремиться сделать так просто, насколько возможно, написать своего собственного провайдера.

Ответ 3

Если вы ищете ORM, тогда SQLAlchemy

Ответ 4

Я еще не использовал его, но это показывает обещание:

asq - это простая реализация API с поддержкой LINQ для Python, который работает с итерами Python, включая параллельную версию, реализованную с точки зрения стандартной библиотеки Python многопроцессорный модуль. Соответствие API имеет эквивалентность с LINQ для объектов, 100% -ное покрытие тестовых отчетов и полную документацию.

Ответ 5

Если вы ищете межязычный LINQ, место, в котором оно происходит, находится в Reactive Extensions, который Microsoft реализует в Python, Ruby, javascript и т.д. Для этого требуется LINQ, поэтому они обычно в конечном итоге реализуют операторы Linq;)

Ответ 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