Skip to main content

SQLAlchemy ORM support for nonebot

Project description

nonebot

NoneBot Plugin ORM

✨ NoneBot 数据库支持插件 ✨

license pypi python

安装

pip install nonebot-plugin-orm
poetry add nonebot-plugin-orm
pdm add nonebot-plugin-orm

# 无需配置、开箱即用的默认依赖
pip install nonebot-plugin-orm[default]

# 特定数据库后端的依赖
pip install nonebot-plugin-orm[mysql]
pip install nonebot-plugin-orm[postgresql]
pip install nonebot-plugin-orm[sqlite]

# 特定数据库驱动的依赖
pip install nonebot-plugin-orm[asyncmy]
pip install nonebot-plugin-orm[aiomysql]
pip install nonebot-plugin-orm[psycopg]
pip install nonebot-plugin-orm[asyncpg]
pip install nonebot-plugin-orm[aiosqlite]

使用方式

ORM

from nonebot import require
from nonebot.params import Depends
from sqlalchemy.orm import Mapped, mapped_column
from sqlalchemy.ext.asyncio import async_scoped_session

require("nonebot_plugin_orm")

from nonebot_plugin_orm import Model, get_scoped_session


class MyModel(Model):
    id: Mapped[int] = mapped_column(primary_key=True)
    data: Mapped[str]


@matcher.handle()
async def handler(session: async_scoped_session = Depends(get_scoped_session)):
    session.add(MyModel(data="data"))
    await session.commit()

CLI

$ nb orm
Usage: nb orm [OPTIONS] COMMAND [ARGS]...

Options:
  -c, --config FILE  可选的配置文件;默认为 ALEMBIC_CONFIG 环境变量的值,或者 "alembic.ini"(如果存在)
  -n, --name TEXT    .ini 文件中用于 Alembic 配置的小节的名称  [default: alembic]
  -x TEXT            自定义 env.py 脚本使用的其他参数,例如:-x setting1=somesetting -x
                     setting2=somesetting
  -q, --quite        不要输出日志到标准输出
  --help             Show this message and exit.

Commands:
  branches        显示所有的分支。
  check           检查数据库是否与模型定义一致。
  current         显示当前的修订。
  downgrade       回退到先前版本。
  edit            使用 $EDITOR 编辑修订文件。
  ensure_version  创建版本表。
  heads           显示所有的分支头。
  history         显示修订的历史。
  init            初始化脚本目录。
  list_templates  列出所有可用的模板。
  merge           合并多个修订。创建一个新的修订文件。
  revision        创建一个新修订文件。
  show            显示修订的信息。
  stamp           将数据库标记为特定的修订版本,不运行任何迁移。
  upgrade         升级到较新版本。

配置项

sqlalchemy_database_url

默认数据库连接 URL。 参见:Engine Configuration — SQLAlchemy 2.0 Documentation

SQLALCHEMY_DATABASE_URL=sqlite+aiosqlite://

sqlalchemy_binds

bind keys 到 AsyncEngine 选项的映射。值可以是数据库连接 URL、AsyncEngine 选项字典或者 AsyncEngine 实例。

SQLALCHEMY_BINDS='{
    "": "sqlite+aiosqlite://",
    "nonebot_plugin_user": {
        "url": "postgresql+asyncpg://scott:tiger@localhost/mydatabase",
        "echo": true
    }
}'

sqlalchemy_echo

所有 AsyncEngineechoecho_pool 选项的默认值。用于快速调试连接和 SQL 生成问题。

SQLALCHEMY_ECHO=true

sqlalchemy_engine_options

所有 AsyncEngine 的默认选项字典。 参见:Engine Configuration — SQLAlchemy 2.0 Documentation

SQLALCHEMY_ENGINE_OPTIONS='{
    "pool_size": 5,
    "max_overflow": 10,
    "pool_timeout": 30,
    "pool_recycle": 3600,
    "echo": true
}'

sqlalchemy_session_options

AsyncSession 的选项字典。 参见:Session API — SQLAlchemy 2.0 Documentation

SQLALCHEMY_SESSION_OPTIONS='{
    "autoflush": false,
    "autobegin": true,
    "expire_on_commit": true
}'

alembic_config

配置文件路径或 AlembicConfig 实例。

ALEMBIC_CONFIG=alembic.ini

alembic_script_location

脚本目录路径。

ALEMBIC_SCRIPT_LOCATION=migrations

alembic_version_locations

迁移脚本目录路径或分支标签到迁移脚本目录路径的映射。

ALEMBIC_VERSION_LOCATIONS=migrations/versions

ALEMBIC_VERSION_LOCATIONS='{
    "": "migrations/versions",
    "nonebot_plugin_user": "src/nonebot_plugin_user/versions",
    "nonebot_plugin_chatrecorder": "migrations/versions/nonebot_plugin_chatrecorder"
}'

alembic_context

MigrationContext 的选项字典。 参见:Runtime Objects — Alembic 1.12.0 documentation

ALEMBIC_CONTEXT='{
    "render_as_batch": true
}'

alembic_startup_check

是否在启动时检查数据库与模型定义的一致性。

ALEMBIC_STARTUP_CHECK=true

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

nonebot_plugin_orm-0.2.2.tar.gz (25.2 kB view details)

Uploaded Source

Built Distribution

nonebot_plugin_orm-0.2.2-py3-none-any.whl (30.9 kB view details)

Uploaded Python 3

File details

Details for the file nonebot_plugin_orm-0.2.2.tar.gz.

File metadata

  • Download URL: nonebot_plugin_orm-0.2.2.tar.gz
  • Upload date:
  • Size: 25.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/4.0.2 CPython/3.11.6

File hashes

Hashes for nonebot_plugin_orm-0.2.2.tar.gz
Algorithm Hash digest
SHA256 a223e2e69d6e13ecf9accb7ca252e3436ac29d8a7ee6ae10fd84806fc1643c29
MD5 d347800123dfd54f15e1b24c1d1586b5
BLAKE2b-256 0de5302bff0133318461cab5cc56d7a4f0f4312d451dfc7fd04af46247489f64

See more details on using hashes here.

Provenance

File details

Details for the file nonebot_plugin_orm-0.2.2-py3-none-any.whl.

File metadata

File hashes

Hashes for nonebot_plugin_orm-0.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 e185f31543e1125c95ce6985c6f3a62c4f25917a3086ab5485ba3651520a1784
MD5 3d05ad37f939cd728aff165401d18423
BLAKE2b-256 e196b2e109e5c1deb528aef558f24a00ed8ddad82def4a3a5a24321f8802dcac

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page