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.6
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.6.tar.gz | 19.4 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| entari_plugin_database-0.3.6-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 41.2 kB
Release files / entari_plugin_database-0.3.6.tar.gz
| Download URL | entari_plugin_database-0.3.6.tar.gz |
|---|---|
| Size | 19.4 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
91314d1b032299f2d6601254f6a5e5e17ec205ad07407d769aff626cb4336350
|
|
BLAKE2b-256 checksum How to use checksums |
b7f0649565302c2dd280709ea4ac00fe07e225fb37a8a273b42d0735db1f58e3
|
| 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.6-py3-none-any.whl
| Download URL | entari_plugin_database-0.3.6-py3-none-any.whl |
|---|---|
| Size | 21.8 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
afc17c679859eb1bfcc749dac6b10f5162ac735f689f425c2febbc74611db4df
|
|
BLAKE2b-256 checksum How to use checksums |
b75775397f9f31ff0488c7e08cd0131f267e8616b72998f0905d39ff6500da3a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
pdm/2.28.0 CPython/3.11.7 Windows/10
|