Простой способ отобразить результаты SQL-запроса с помощью web.py - PullRequest
0 голосов
/ 19 мая 2011

Используя web.py, я создаю несколько наборов результатов с помощью

web.database.query()

И я хотел бы отобразить результаты запроса в HTML-шаблоне.

У web.py есть какие-нибудь встроенные средства для этого?Я не видел никаких примеров документов и кода.

Буду также признателен за любые указатели на другие модули, которые приведут результирующий набор sql во что-то, что может быть отображено сеткой данных jquery или google.,Я начал работать над конвертером сетки данных Google, но мне пришлось прыгать через несколько обручей, чтобы обрабатывать различные типы данных.Я полагаю, что это было сделано много раз прежде - я просто хотел бы знать, где я должен искать.

1 Ответ

2 голосов
/ 19 мая 2011

Ознакомьтесь с документацией для встроенной системы шаблонов web.py . Есть также примеры поваренной книги для подключения в сторонних шаблонных движках , таких как Мако , Гепард и Jinja2 .

Чтобы преобразовать данные, отображаемые в Javascript, вы можете использовать один из модулей JSON для Python: стандартный модуль json (2.6 +) , simplejson или питон-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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...