跳转到主要内容

Datasette插件,用于从模板执行SQL查询

项目描述

datasette-template-sql

PyPI Changelog Tests License

Datasette插件,用于从模板执行SQL查询。

示例

www.niche-museums.com 使用此插件在Datasette之上运行自定义主题网站。网站的完整源代码在此 - 另请参阅niche-museums.com,由Datasette提供支持

simonw/til 是另一个简单示例,请参阅使用GitHub Actions驱动的自重写README来跟踪TILs

安装

运行此命令以在Datasette相同环境中安装插件

$ pip install datasette-template-sql

用法

此插件使您的Datasette模板可用一个新的函数,sql(sql_query)

您可以使用它如下

{% for row in sql("select 1 + 1 as two, 2 * 4 as eight") %}
    {% for key in row.keys() %}
        {{ key }}: {{ row[key] }}<br>
    {% endfor %}
{% endfor %}

插件将对当前数据库执行SQL查询,适用于database.htmltable.htmlrow.html模板。如果模板没有当前数据库(例如index.html),则查询将针对第一个附加的数据库执行。

带参数的查询

您可以通过传递列表或字典作为第二个参数,使用?:name参数语法构建SQL查询

{% for row in sql("select distinct topic from til order by topic") %}
    <h2>{{ row.topic }}</h2>
    <ul>
        {% for til in sql("select * from til where topic = ?", [row.topic]) %}
            <li><a href="{{ til.url }}">{{ til.title }}</a> - {{ til.created[:10] }}</li>
        {% endfor %}
    </ul>
{% endfor %}

以下是使用:topic风格参数的相同示例

{% for row in sql("select distinct topic from til order by topic") %}
    <h2>{{ row.topic }}</h2>
    <ul>
        {% for til in sql("select * from til where topic = :topic", {"topic": row.topic}) %}
            <li><a href="{{ til.url }}">{{ til.title }}</a> - {{ til.created[:10] }}</li>
        {% endfor %}
    </ul>
{% endfor %}

查询不同数据库

您可以通过传递可选的database=参数来指定用于查询的命名数据库。例如,如果您附加了news.db数据库,可以使用此参数

{% for article in sql(
    "select headline, date, summary from articles order by date desc limit 5",
    database="news"
) %}
    <h3>{{ article.headline }}</h2>
    <p class="date">{{ article.date }}</p>
    <p>{{ article.summary }}</p>
{% endfor %}

项目详情


下载文件

下载适合您平台的文件。如果您不确定选择哪个,请了解有关安装包的更多信息。

源代码发行版

datasette-template-sql-1.0.2.tar.gz (3.1 kB 查看哈希值)

上传时间 源代码

构建发行版

datasette_template_sql-1.0.2-py3-none-any.whl (7.4 kB 查看哈希值)

上传时间 Python 3

支持者