2013-03-05 127 views
1

我在Python獲取從我的數據庫中的數據集的SQLAlchemy:SQLAlchemy的結果後處理

links = session.query(Link).order_by(Link.id.desc()).limit(20) 

我然後遍歷links結果在我看來:

%for link in links: 
    <div class="link"> 
     {{link.url}} 
     %if link.pdf: 
      <a href="{{link.pdf}}">[pdf]</a> 
     %end 
    </div> 
%end 

我想要讀取link,pdf中的外部屬性(如果PDF文件存在結果)。

我已經試過:

for index, link in enumerate(links): 
    if os.path.isfile('/pdf/'+str(link.id)+'.pdf'): 
     links[index].pdf = '/pdf/'+str(link.id)+'.pdf' 
    else: 
     links[index].pdf = None 

pdf屬性顯然沒有設置。

我在做什麼錯?在你的模板

linkinfo = [] 
for link in links: 
    pdf = '/pdf/'+str(link.id)+'.pdf' 
    pdf = pdf if os.path.isfile(pdf) else None 
    linkinfo.append({'url': link.url, 'pdf': pdf}) 

然後在linkinfo列表循環,而不是:

回答

1

添加python屬性應該可以完成這項工作,例如,

class Link(Base): 
    ... 

    @property 
    def pdf(self): 
     path = '/pdf/%d.pdf' % self.id 
     if os.path.isfile(path): 
      return path 
+0

謝謝,這就是我應該首先做到的 – kevin 2013-03-05 17:27:58

0

一般情況下,我想創建一個映射列表與所需的信息。

這節省了與SQLAlchemy對象的麻煩,並確保您的模板被交給所有正確的數據進行顯示。