2010-01-18 582 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,查詢將只返回有一個完全非NULL主鍵列。此行爲特定於版本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