Я хочу знать, имеет ли 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()
Если вы сопоставили ViewMytable
, запрос будет возвращать только строки, которые имеют полностью ненутренний первичный ключ. Это поведение специфично для версий 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