使用 web.py 显示 sql 查询结果的简单方法
我使用 web.py 创建了一些结果集,
web.database.query()
并且我想在 html 模板上显示查询结果。
web.py 是否有任何内置工具可以执行此操作?我没有看到任何文档和代码示例。
我也很感激任何指向其他模块的指针,这些模块会将 sql 结果集强制转换为可以由 jquery 或 google 数据网格显示的内容。我开始研究谷歌数据网格转换器,但我必须跳过一些环节来处理各种数据类型。我想这之前已经做过很多次了——我只是想知道我应该在哪里寻找。
Using web.py, I'm creating a handful of result sets by using
web.database.query()
And I'd like to display the query results on an html template.
Does web.py have any built-in facility for doing this? I didn't see any going through the doc and code samples.
I'd also appreciate any pointers to other modules that will coerce the sql result set into something that can be displayed by a jquery or google data grid. I started working on a google data grid converter but I had to jump through some hoops to handle the various datatypes. I figure this has been done tons of times before - I'd just like to know where I should be looking.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(1)
查看 web.py 的内置模板系统的文档。还有用于挂钩第 3 方模板引擎的说明书示例,例如 hookbook 示例。 org/cookbook/template_mako" rel="nofollow">Mako、猎豹 和 Jinja2。
为了转换要由 Javascript 显示的数据,您可以使用 Python 的 JSON 模块之一:标准 json 模块 (2.6+)、simplejson 或 python-cjson。
下面是一个使用
web.template
模块呈现一个简单的 HTML 页面(显示一些数据库查询结果)的快速示例。已更新
select
方法不会将列名称作为单独的属性返回。它返回一个迭代器,其中每一行都是一个字典。因此,要获取列标题,您需要从第一行获取列标题。我更新了示例以展示如何完成此操作:输出(折叠以节省空间):
Check out the docs for web.py's built-in templating system. There are also cookbook examples for hooking in 3rd party template engines like Mako, Cheetah and Jinja2.
In order to convert the data to be displayed by Javascript you could use one of the JSON modules for Python: the standard json module (2.6+), simplejson, or python-cjson.
Here is a quick example of using the
web.template
module to render a simple HTML page showing some database query results.Updated The
select
method doesn't return the column names as a separate attribute. It returns an iterator where each row is a dictionary. Therefore, to get the column headers you need to grab then from the first row. I've updated the example to show how this can be done:Output (collapsed to save space):