用于修改表结构的 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