簡體   English   中英

使用web.py顯示sql查詢結果的簡單方法

[英]Simple way to display results of a sql query using web.py

使用web.py,我正在使用創建一些結果集

web.database.query()

我想在html模板上顯示查詢結果。

web.py是否有任何內置工具來執行此操作? 我沒有看到任何文檔和代碼示例。

我還要感謝任何指向其他模塊的指針,這些模塊會將sql結果集強制轉換為可以由jquery或google數據網格顯示的內容。 我開始研究谷歌數據網格轉換器,但我不得不跳過一些箍來處理各種數據類型。 我認為這已經做了很多次 - 我只是想知道我應該在哪里看。

查看web.py內置模板系統的文檔。 還有 MakoCheetahJinja2第三方模板引擎中掛鈎的食譜示例

為了轉換要通過Javascript顯示的數據,您可以使用Python的一個JSON模塊: 標准的json模塊(2.6 +)simplejsonpython-cjson

下面是使用web.template模塊呈現顯示一些數據庫查詢結果的簡單HTML頁面的快速示例。

更新 select方法不會將列名作為單獨的屬性返回。 它返回一個迭代器,其中每一行都是一個字典。 因此,要獲取列標題,您需要從第一行獲取。 我已經更新了示例以說明如何完成此操作:

import web

TEMPLATE = '''$def with (rows, cols)
<html><body>
<h2>Results:</h2>
<table>
<tr>
$for col in cols:
    <th>$col</th>
</tr>
$for row in rows:
    <tr>
    $for col in cols:
        <td>$row[col]</td>
    </tr>
</table></body></html>'''

class query:
    def GET(self, arg):
        res = db.select('player', what='id,name')
        cols = []
        rows = res.list()
        if rows:
            cols = rows[0].keys()
        return tmpl(rows, cols)

db = web.database(dbn='mysql')
tmpl = web.template.Template(TEMPLATE)
urls = ('/(.*)', 'query')

if __name__ == '__main__':
    app = web.application(urls, globals())
    app.run()

輸出(折疊以節省空間):

<html><body>
<h2>Results:</h2>
<table>
<tr><th>id</th><th>name</th></tr> 
<tr><td>1</td> <td>Joe</td></tr>
<tr><td>2</td><td>Gary</td></tr>
<tr> <td>3</td><td>Fred</td></tr>
</table></body></html>

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM