![](/img/trans.png)
[英]web.py select returning no results, but length of that list does (also manual query in sql promt returns results)
[英]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內置模板系統的文檔。 還有在 Mako , Cheetah和Jinja2等第三方模板引擎中掛鈎的食譜示例 。
為了轉換要通過Javascript顯示的數據,您可以使用Python的一個JSON模塊: 標准的json模塊(2.6 +) , simplejson或python-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.