2010-01-18 3 views
5

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

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() 

ответ

8

если вы сопоставили ViewMyTable, запрос будет возвращать только те строки, которые имеют полностью ненулевой первичный ключ. Это поведение относится к версиям 0.5 и ниже - на 0,6, если в любом из столбцов есть не NULL в первичном ключе, строка превращается в экземпляр. Укажите флаг 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 
Смежные вопросы