[英]Sqlalchemy results post-processing
我正在使用python中的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
如果要獲取結果的pdf文件,我想讀取link
, 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
屬性。
我究竟做錯了什么 ?
添加python屬性應該可以完成這項工作,例如
class Link(Base):
...
@property
def pdf(self):
path = '/pdf/%d.pdf' % self.id
if os.path.isfile(path):
return path
通常,我會使用所需信息創建一個映射列表:
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
列表。
這省去了使用SQLAlchemy對象的麻煩,並確保將模板顯示的所有正確數據都交給了模板。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.