元数据¶
数据喜欢元数据。随时运行 Datasette 时,您可以选择包含一个 JSON 文件,其中包含有关您的数据库和表的元数据。然后 Datasette 会在 Web UI 中显示这些信息。
按如下方式运行 Datasette
datasette database1.db database2.db --metadata metadata.json
您的 metadata.json
文件可以看起来像这样
{
"title": "Custom title for your index page",
"description": "Some description text can go here",
"license": "ODbL",
"license_url": "https://opendatacommons.org/licenses/odbl/",
"source": "Original Data Source",
"source_url": "http://example.com/"
}
您可以选择使用 YAML 而不是 JSON,参见 使用 YAML 作为元数据。
上述元数据将显示在您的 Datasette 驱动站点的索引页上。来源和许可证信息也将包含在 Datasette 服务的所有页面的页脚中。
description
中的任何特殊 HTML 字符将被转义。如果您想在描述中包含 HTML,可以使用 description_html
属性代替。
按数据库和按表的元数据¶
JSON 顶层的元数据将显示在索引页和网站的每个页面的页脚中。许可证和来源预计适用于您的所有数据。
您也可以在按数据库或按表级别提供元数据,像这样
{
"databases": {
"database1": {
"source": "Alternative source",
"source_url": "http://example.com/",
"tables": {
"example_table": {
"description_html": "Custom <em>table</em> description",
"license": "CC BY 3.0 US",
"license_url": "https://creativecommons.org/licenses/by/3.0/us/"
}
}
}
}
}
顶层的每个元数据字段都可以在数据库和表级别使用。
来源、许可证和关于¶
您可以应用于所有内容、特定数据库或特定表的三种可见元数据字段是 source、license 和 about。这三个字段都是可选的。
source 和 source_url 应用于指示原始数据来源。
license 和 license_url 应用于指示数据可以使用的许可证。
about 和 about_url 可用于链接到有关项目的更多信息 - 例如一篇配套的博客文章。
对于这些字段中的每一个,您都可以只提供 *_url
字段,Datasette 会将其视为默认链接标签文本并直接在页面上显示 URL。
列描述¶
您可以通过在表的元数据中添加 "columns": {"name-of-column": "description-of-column"}
块来包含列的描述
{
"databases": {
"database1": {
"tables": {
"example_table": {
"columns": {
"column1": "Description of column 1",
"column2": "Description of column 2"
}
}
}
}
}
}
这些将显示在表页面的顶部,也会在每列的齿轮菜单中显示。
您可以在 latest.datasette.io/fixtures/roadside_attractions 查看这些内容的示例。
指定列的单位¶
Datasette 支持为列附加单位,这将在显示该列的值时使用。适当时将使用 SI 前缀。
列单位在元数据中配置如下
{
"databases": {
"database1": {
"tables": {
"example_table": {
"units": {
"column1": "metres",
"column2": "Hz"
}
}
}
}
}
}
单位使用 Pint 进行解释,您可以在 Pint 的单位注册表中查看可用单位的完整列表。您还可以向元数据添加自定义单位,这些单位将注册到 Pint 中
{
"custom_units": [
"decibel = [] = dB"
]
}
设置默认排序顺序¶
默认情况下,Datasette 表按主键排序。您可以使用 "sort"
或 "sort_desc"
元数据属性覆盖特定表的此默认设置
{
"databases": {
"mydatabase": {
"tables": {
"example_table": {
"sort": "created"
}
}
}
}
}
或者使用 "sort_desc"
按降序排序
{
"databases": {
"mydatabase": {
"tables": {
"example_table": {
"sort_desc": "created"
}
}
}
}
}
设置自定义页面大小¶
Datasette 默认每页显示 100 行,适用于表和视图。您可以使用 metadata.json
中的 "size"
键按表或按视图更改此默认页面大小
{
"databases": {
"mydatabase": {
"tables": {
"example_table": {
"size": 10
}
}
}
}
}
此大小仍然可以通过在查询字符串中传递例如 ?_size=50
来覆盖。
设置哪些列可用于排序¶
默认情况下,Datasette 允许任何列用于排序。如果您需要控制哪些列可用于排序,可以使用可选的 sortable_columns
键来实现
{
"databases": {
"database1": {
"tables": {
"example_table": {
"sortable_columns": [
"height",
"weight"
]
}
}
}
}
}
这将限制 example_table
的排序仅限于 height
和 weight
列。
您也可以通过设置 "sortable_columns": []
完全禁用排序
您可以使用 sortable_columns
为数据库 my_database
中名为 name_of_view
的视图启用特定的排序顺序,如下所示
{
"databases": {
"my_database": {
"tables": {
"name_of_view": {
"sortable_columns": [
"clicks",
"impressions"
]
}
}
}
}
}
指定表的标签列¶
Datasette 的 HTML 界面尝试将外键引用显示为带标签的超链接。默认情况下,它查找仅有两个列的引用表:一个主键列和另一个列。它假定第二个列应用作链接标签。
如果您的表有两个以上的列,您可以使用 label_column
属性指定应使用哪个列作为链接标签
{
"databases": {
"database1": {
"tables": {
"example_table": {
"label_column": "title"
}
}
}
}
}
隐藏表¶
您可以使用 "hidden": true
从数据库列表视图中隐藏表(与 FTS 和 SpatiaLite 表自动隐藏的方式相同)
{
"databases": {
"database1": {
"tables": {
"example_table": {
"hidden": true
}
}
}
}
}
使用 YAML 作为元数据¶
Datasette 接受 YAML 作为元数据配置文件的 JSON 替代方案。YAML 对于包含多行 HTML 和 SQL 字符串特别有用。
这是一个 metadata.yml
文件示例,重用了来自 预置查询 (Canned queries) 的示例。
title: Demonstrating Metadata from YAML
description_html: |-
<p>This description includes a long HTML string</p>
<ul>
<li>YAML is better for embedding HTML strings than JSON!</li>
</ul>
license: ODbL
license_url: https://opendatacommons.org/licenses/odbl/
databases:
fixtures:
tables:
no_primary_key:
hidden: true
queries:
neighborhood_search:
sql: |-
select neighborhood, facet_cities.name, state
from facetable join facet_cities on facetable.city_id = facet_cities.id
where neighborhood like '%' || :text || '%' order by neighborhood;
title: Search neighborhoods
description_html: |-
<p>This demonstrates <em>basic</em> LIKE search
metadata.yml
文件使用相同的 --metadata
选项传递给 Datasette
datasette fixtures.db --metadata metadata.yml