簡體   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