用于修改表结构的 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-table、alter-table 和 drop-table 事件,使用的是 Datasette 事件系统,该系统是在 Datasette 1.0a8 中引入的。
要在本地设置此插件,首先检出代码。然后创建一个新的虚拟环境
cd datasette-edit-schema
python3 -mvenv venv
source venv/bin/activate或者如果您正在使用 pipenv
pipenv shell现在安装依赖项和测试
pip install -e '.[test]'运行测试
pytest