繁体   English   中英

SQLAlchemy结果后处理

[英]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文件,我想读取linkpdf的外部属性。

我试过了 :

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM