[英]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.