entari-plugin-database
Entari plugin for SQLAlchemy ORM
功能
- 提供数据库服务支持,管理多个数据库连接
- 依赖注入会话与 ORM 模型数据
- 依据类型注解或 SQLDepends 的复杂依赖关系注入
- 例如
Sequence[Model]会注入所有模型 - 声明
SQLDepends(select(Model).where(Model.field == value))会注入查询结果 - 通过配合
arclet.entari.param, 可以在SQLDepends的查询语句中使用param声明其他的依赖注入参数
- 例如
- 自动数据库迁移
- 通过
alembic实现 - 检测到模型变更时,自动生成并应用迁移脚本
- 根据模型的
__bind_key__属性,支持多数据库迁移 - 允许开发者自定义迁移脚本
- 通过
多数据库
- 插件配置项
binds可以根据 bind_key 声明多个数据库连接 - ORM 模型可以通过
__bind_key__属性指定使用哪个数据库连接 - 默认数据库连接使用
""作为bind_key
迁移
- ORM 模型的变更会被自动检测并生成迁移脚本
- 本插件会根据模型的结构自动计算
revision - ORM 模型可以声明
__revision__属性来指定特定的revision - 迁移记录将存储在用户目录下的
.entari/data/database/migrations_lock.json文件中
配置
type:数据库类型,默认为sqlite。name:数据库名称或文件路径,默认为data.db。driver:数据库驱动,默认为aiosqlite;其他类型的数据库驱动参考 SQLAlchemy 文档。host:数据库主机地址。如果是 SQLite 数据库,此项可不填。port:数据库端口号。如果是 SQLite 数据库,此项可不填。username:数据库用户名。如果是 SQLite 数据库,此项可不填。password:数据库密码。如果是 SQLite 数据库,此项可不填。query:数据库连接参数,默认为空字典。可以传入如{"timeout": "30"}的参数。session_options:数据库会话选项,默认为 None。可以传入如{"expire_on_commit": False}的字典。binds:数据库绑定配置,默认为 None。可以传入如{"bind1": UrlInfo(...), "bind2": UrlInfo(...)}的字典。plugins: database: type: sqlite binds: foo: type: mysql driver: asyncmy host: localhost port: 3306 name: foo_db username: root password: password
options:数据库连接选项,默认为{"echo": None, "pool_pre_ping": True}。create_table_at:在指定阶段创建数据库表,默认为 'preparing'。可选值为 'preparing', 'prepared', 'blocking'。
Metadata
Release files for entari-plugin-database 0.3.5
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| entari_plugin_database-0.3.5.tar.gz | 18.7 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| entari_plugin_database-0.3.5-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 40.0 kB
Release files / entari_plugin_database-0.3.5.tar.gz
| Download URL | entari_plugin_database-0.3.5.tar.gz |
|---|---|
| Size | 18.7 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
9621fa0f3d2ec68a1aa1e0e0110bbaa78f15a154189133bfd0a4a61bf0479fea
|
|
BLAKE2b-256 checksum How to use checksums |
b17cec52f33117584a518b56da93f0b6f4fa328802834f5b64f125c3cf0674cf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
pdm/2.28.0 CPython/3.11.7 Windows/10
|
Release files / entari_plugin_database-0.3.5-py3-none-any.whl
| Download URL | entari_plugin_database-0.3.5-py3-none-any.whl |
|---|---|
| Size | 21.3 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
5c7149ca595b7c653b8358d855583ad5d6130a1658ae7ccd188a50123cf1631b
|
|
BLAKE2b-256 checksum How to use checksums |
c54d170a29ad71888b65cc6aa3bcf31ab113ed865d064dcb4a4945bab597c160
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
pdm/2.28.0 CPython/3.11.7 Windows/10
|