SQLAlchemy sqlalchemy.sql.expression.select против sqlalchemy.sql.expression.Select - PullRequest
1 голос
/ 29 января 2010

Итак, я новичок в SQLAlchemy и пытаюсь использовать API-выражение SQL для создания оператора SELECT, в котором указываются точные столбцы для возврата. Я нашел и class , и function , определенные в модуле sqlalchmey.sql.expressions, и я не слишком уверен, какой использовать ... Почему у них есть и класс функция? Когда бы вы использовали один поверх другого? И кто-нибудь захочет объяснить, почему они должны иметь оба в своей библиотеке? Для меня не имеет большого смысла быть честным, кроме как просто сбить меня с толку. :) JK

Заранее спасибо за помощь!

Ответы [ 3 ]

3 голосов
/ 29 января 2010

Использовать источник .

Вот реализация функции select из исходного кода:

def select(columns=None, whereclause=None, from_obj=[], **kwargs):
    """Returns a ``SELECT`` clause element.
    (... long docstring ...)
    """
    return Select(columns, whereclause=whereclause, from_obj=from_obj, **kwargs)

Итак, это точно так же.

1 голос
/ 02 февраля 2010

пакет выражений предоставляет функции Python для всего. Эти функции в некоторых случаях возвращают дословно экземпляр класса из аргументов функции, а в других случаях составляют объект из нескольких компонентов. Первоначально была идея, что функции будут делать намного больше композиции, чем они в итоге делали. В любом случае, пакет предпочитает придерживаться pep-8, поскольку классы находятся в CamelCase, функции - все в нижнем регистре, а внешний интерфейс API должен быть в нижнем регистре, поэтому у вас есть общедоступные функции конструктора. *

Язык выражений SQL очень прост, если вы начнете с учебника .

0 голосов
/ 29 января 2010

Я думаю, что это почти то же самое.В документации сказано для select (функция):

The returned object is an instance of Select.

Поскольку вы можете передать функции выбора те же параметры, которые принимает Select.__init__(), я на самом деле не вижу разницы.На первый взгляд аргументы конструктора класса кажутся надмножеством функций.Но функции может быть передан любой из ключевых аргументов конструктора.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...