datasette-edit-schema 作者 simonw

星标

README 源代码

datasette-edit-schema

PyPI Changelog Tests License

用于修改表结构的 Datasette 插件

⚠️最新的 alpha 版本依赖于 Datasette 1.09a。对于旧版本的 Datasette,请使用 0.7.1 版本

特性

  • 向表中添加新列
  • 重命名表中的列
  • 修改表中的列类型
  • 重新排列表中的列顺序
  • 重命名表
  • 删除表
  • 将表的主键更改为包含唯一值的其他列
  • 更新表上的外键约束
  • 向表中的列添加索引(或唯一索引)
  • 从表中删除索引

安装

在与 Datasette 相同的环境中安装此插件。

pip install datasette-edit-schema

使用方法

在您的 Datasette 实例上导航至 /-/edit-schema/dbname/tablename 以编辑特定的表。

使用 /-/edit-schema/dbname 在特定数据库中创建新表。

默认情况下,只有 根 actor 可以访问该页面 - 因此您需要使用 --root 选项运行 Datasette,并点击终端中显示的链接以登录并访问页面。

权限

edit-schema 权限提供对所有功能的访问。

您可以使用权限插件,例如 datasette-permissions-sql,来授予对写入接口的额外访问权限。

这些权限检查将调用 permission_allowed() 插件钩子,并带有三个参数

  • action 将是字符串 "edit-schema"
  • actor 将是当前已认证的 actor - 通常是一个字典
  • resource 将是数据库的字符串名称

您可以转而使用 Datasette 默认权限集合中更细粒度的权限

  • create-table 允许用户创建新表。resource 将是数据库的名称。
  • drop-table 允许用户删除表。resource 将是 (database_name, table_name) 的元组。
  • alter-table 允许用户修改表。resource 将是 (database_name, table_name) 的元组。

要重命名表,用户必须同时拥有该表的 drop-table 权限和该数据库的 create-table 权限。

例如,要配置 Datasette 允许 ID 为 pelican 的用户在 marketing 数据库中创建、修改和删除表,并仅修改 sales 数据库中的 notes 表,您可以使用以下配置

databases:
  marketing:
    permissions:
      create-table:
        id: pelican
      drop-table:
        id: pelican
      alter-table:
        id: pelican
  sales:
    tables:
      notes:
        permissions:
          alter-table:
            id: pelican

事件

此插件在表被修改时触发 create-tablealter-tabledrop-table 事件,使用的是 Datasette 事件系统,该系统是在 Datasette 1.0a8 中引入的。

截图

datasette-edit-schema interface

开发

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

cd datasette-edit-schema
python3 -mvenv venv
source venv/bin/activate

或者如果您正在使用 pipenv

pipenv shell

现在安装依赖项和测试

pip install -e '.[test]'

运行测试

pytest