datasette-sqlite-authorizer 由 datasette 开发

标星

README 源代码

datasette-sqlite-authorizer

PyPI Changelog Tests License

配置 Datasette 使用 SQLite 的 set_authorizer 机制来阻止操作

安装

在 Datasette 所在的同一环境中安装此插件。

datasette install datasette-sqlite-authorizer

使用方法

此插件目前提供一个配置选项:read_only_tables。您可以使用此选项指定应设为只读的表列表。

如果一个表是只读的,任何对其进行的写入尝试 - insertupdatedeletedrop tablealter table - 都将被拒绝并显示错误消息。

要配置只读表,请将以下内容添加到您的 metadata.yaml 文件中

plugins:
  datasette-sqlite-authorizer:
    read_only_tables:
    - table: my_table
      database: my_database

如果您想将相同的规则应用于所有数据库,可以省略 database 键。

以下是如何使用此插件使所有与 Litestream 同步相关的表在所有附加的数据库中都设为只读

plugins:
  datasette-sqlite-authorizer:
    read_only_tables:
    - table: _litestream_lock
    - table: _litestream_seq

日志记录操作

要为特定操作检查启用调试输出(到标准错误),请将它们添加到 debug_actions 列表中。例如,要记录所有 SQLITE_INSERT 操作

plugins:
  datasette-sqlite-authorizer:
    debug_actions:
    - SQLITE_INSERT
    - SQLITE_DELETE

记录的输出将类似于这样

authorizer: {"action": "SQLITE_INSERT", "arg1": "foo", "arg2": null, "db_name": "main", "trigger_name": null, "result": "OK"}
authorizer: {"action": "SQLITE_DELETE", "arg1": "foo", "arg2": null, "db_name": "main", "trigger_name": null, "result": "OK"}

开发

要在本地设置此插件,请首先检出代码。然后创建一个新的虚拟环境

cd datasette-sqlite-authorizer
python3 -m venv venv
source venv/bin/activate

现在安装依赖项和测试依赖项

pip install -e '.[test]'

运行测试

pytest