Запрос представления в SQLAlchemy - PullRequest
5 голосов
/ 18 января 2010

Я хочу знать, есть ли у SQLAlchemy проблемы с запросом представления. Если я запрашиваю представление с нормальным SQL на сервере, как:

SELECT * FROM ViewMyTable WHERE index1 = '608_56_56';

Я получаю целую кучу записей. Но с SQLAlchemy я получаю только первый. Но на счету правильный номер. Понятия не имею почему.

Это мой код SQLAlchemy.

myQuery = Session.query(ViewMyTable)
erg = myQuery.filter(ViewMyTable.index1 == index1.strip())

# Contains the correct number of all entries I found with that query.
totalCount = erg.count()
# Contains only the first entry I found with my query.
ergListe = erg.all()

1 Ответ

9 голосов
/ 20 января 2010

, если вы сопоставили ViewMyTable, запрос будет возвращать только те строки, которые имеют первичный ключ, отличный от NULL.Такое поведение характерно для версий 0.5 и ниже - на 0.6, если в каком-либо из столбцов первичный ключ имеет ненулевое значение, строка превращается в экземпляр.Укажите флаг allow_null_pks=True для своих картографов, чтобы гарантировать, что частичные первичные ключи все еще учитываются:

mapper(ViewMyTable, myview, allow_null_pks=True)

Если в OTOH возвращенные строки имеют все нулевые значения для первичного ключа, то SQLAlchemy не может создать сущность, посколькуПоместите это в карту личности.Вместо этого вы можете получить доступ к отдельным столбцам, запросив их специально:

for id, index in session.query(ViewMyTable.id, ViewMyTable.index):
    print id, index
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...