Уведомления

Группа в Telegram: @pythonsu

#1 Дек. 15, 2008 06:24:41

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

writer need

Господа, кто хорошо по аглицки пищет, помогите багрепорт в SQLAlchemy написать, а то у меня английский read-only :(



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

#2 Дек. 15, 2008 08:24:05

AlexKiriukha
От:
Зарегистрирован: 2008-02-03
Сообщения: 81
Репутация: +  0  -
Профиль   Отправить e-mail  

writer need

PooH, так может сюда написать проблему? Возможности коллективного разума могут помочь в этом нелёгком деле.



Офлайн

#3 Дек. 16, 2008 05:43:17

PooH
От:
Зарегистрирован: 2006-12-05
Сообщения: 1948
Репутация: +  72  -
Профиль   Отправить e-mail  

writer need

AlexKiriukha
PooH, так может сюда написать проблему? Возможности коллективного разума могут помочь в этом нелёгком деле.
Ну вот как-то так:
В SQLAlchemy-0.5.0rc1, файл sql/expression.py строка 2877 скалярность запроса при создании _ScalarSelect определялась так:
    def __init__(self, element):
self.element = element
cols = list(element.inner_columns)
if len(cols) != 1:
raise exc.InvalidRequestError("Scalar select can only be created from a Select object that has exactly one column expression.")
self.type = cols[0].type
в более поздних версиях код был изменен
SQLAlchemy-0.5.0.rc4 , файл sql/expression.py строка 2992
   def __init__(self, element):
self.element = element
cols = list(element.c)
if len(cols) != 1:
raise exc.InvalidRequestError("Scalar select can only be created "
"from a Select object that has exactly one column expression.")
self.type = cols[0].type
При этом если колонки запроса создавались с помощью функции text() он имеет len(element.c) равное нулю и данный код бросает исключение InvalidRequestError на совершенно правильный запрос.

Пример:
q = select([text('CASE WHEN complex_id IS NOT NULL THEN complex_id '
'WHEN construction_id IS NOT NULL THEN construction_id ELSE realty.id END')],
from_obj=model.offer_table, distinct=True)
result = session.query(model.Realty).filter(model.Realty.id.in_(q))
Этот код работает в в SQLAlchemy-0.5.0rc1, но выдает исключение в SQLAlchemy-0.5.0.rc4



Вот здесь один из первых отарков съел лаборанта. Это был такой умный отарк, что понимал даже теорию относительности. Он разговаривал с лаборантом, а потом бросился на него и загрыз…

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version