二进制数据

SQLite 表可以在 BLOB 列中包含二进制数据。

Datasette 包含对这些二进制值的特殊处理。Datasette 界面会检测二进制值,并提供下载其内容的链接,例如在 https://latest.datasette.io/fixtures/binary_data

Screenshot showing download links next to binary data in the table view

二进制数据在 .json 导出中使用 Base64 编码表示。

https://latest.datasette.io/fixtures/binary_data.json?_shape=array

[
    {
        "rowid": 1,
        "data": {
            "$base64": true,
            "encoded": "FRwCx60F/g=="
        }
    },
    {
        "rowid": 2,
        "data": {
            "$base64": true,
            "encoded": "FRwDx60F/g=="
        }
    },
    {
        "rowid": 3,
        "data": null
    }
]

链接到二进制下载

.blob 输出格式用于返回二进制数据。它需要一个 _blob_column= 查询字符串参数来指定应下载哪个 BLOB 列,例如

https://latest.datasette.io/fixtures/binary_data/1.blob?_blob_column=data

此输出格式也可用于从任意 SQL 查询返回二进制数据。由于此类查询不指定确切的行,因此可以使用附加的 ?_blob_hash= 参数来指定所链接值的 SHA-256 哈希值。

考虑查询 select data from binary_data - 在此处演示

该页面链接到二进制值的下载。这些链接如下所示:

https://latest.datasette.io/fixtures.blob?sql=select+data+from+binary_data&_blob_column=data&_blob_hash=f3088978da8f9aea479ffc7f631370b968d2e855eeb172bea7f6c7a04262bb6d

这些 .blob 链接也会在 Datasette 为二进制表和查询提供的 .csv 导出中返回,因为 CSV 格式没有表示二进制数据的机制。

二进制插件

有几个 Datasette 插件可以改变 Datasette 处理二进制数据的方式。

  • datasette-render-binary 修改了 Datasette 的默认界面,以自动猜测正在存储的二进制数据类型,并提供二进制值的可视化表示,该表示直接在界面中显示 ASCII 字符串。

  • datasette-render-images 检测常见的图像格式,并将它们直接在 Datasette 界面中渲染为图像。

  • datasette-media 允许配置 Datasette 界面,以便从配置的 SQL 查询中提供二进制文件,并包括在提供图像之前直接调整图像大小的功能。