Drivers and dependencies
Orionis recognizes exactly six driver identifiers. Python extras install connectors, not a server or database. SQLite is included in core dependencies. Examples do not pin versions: the framework catalog determines installed requirements.
| Orionis driver | Query path | Extra packages |
|---|---|---|
sqlite | sqlite+aiosqlite | Core aiosqlite; sqlite3 for sync consumers. |
mysql | mysql+aiomysql | aiomysql and pymysql. |
pgsql | postgresql+asyncpg | asyncpg and psycopg2-binary. |
oracle | oracle+oracledb_async | oracledb. |
sqlserver | mssql+aioodbc | aioodbc and pyodbc. |
redshift | redshift+redshift_connector | redshift-connector and sqlalchemy-redshift. |
Sync drivers serve consumers requiring a blocking engine, such as the persistent scheduler store. Redshift uses the official blocking connector through a reserved worker per checkout; it does not connect through asyncpg.
Installing through Reactor
Section titled “Installing through Reactor”python -B reactor packagesorionis packagesThe command loads project.optional-dependencies extras and dependency-groups groups from Orionis’ manifest, preferring the bundled package manifest, then framework source and finally the application manifest. It displays the catalog, target interpreter and each option’s purpose.
In an interactive terminal select names or numbers, separated by spaces or commas; 0 cancels. Duplicate selections and requirements are removed in order. It then asks for confirmation, defaulting to no.
packages options
Section titled “packages options”packages [options ...] [--list] [--yes | -y]| Argument or option | Default | Behavior |
|---|---|---|
options | [] | Zero or more names, numbers or extra:NAME/group:NAME keys. Without selection prompts only in an interactive terminal. |
--list | False | Lists without installing; exits before resolving selections. |
--yes, -y | False | Confirms selected options automatically. |
-h, --help | — | CLI help. |
Plain names work when unambiguous. If a name matches both an extra and a group, use its namespace. Numbers depend on the displayed catalog; use names in automation.
python -B reactor packages --listpython -B reactor packages extra:mysql --yespython -B reactor packages extra:pgsql --yespython -B reactor packages extra:oracle --yespython -B reactor packages extra:sqlserver --yespython -B reactor packages extra:redshift --yespython -B reactor packages extra:database --yesorionis packages extra:mysql extra:pgsql -yEach line is an alternative: install only needed backends; extra:database groups all optional connectors. Without an interactive terminal, installation requires explicit selection and --yes. --yes alone does not select everything.
The command runs uv pip install --python <current interpreter> -- <requirements>. It requires uv on PATH and targets the environment running Reactor. It does not use uv add or update project declarations/lockfiles itself. Declare the extra in your project as well when package-manager reproducibility is needed:
uv add "orionis[pgsql]"Exit status is 0 for success, voluntary cancellation or empty selection; 130 for interruption; 1 for invalid configuration, missing uv or missing noninteractive confirmation. Installer failures retain positive exit codes. The command does not check server access.
SQLite
Section titled “SQLite”Needs neither a separate server nor an extra. File paths are relative to the working directory; run Reactor from the project root. The parent directory must exist. Enable foreign keys when your application depends on them; the template defaults to OFF. In-memory connections use exclusive checkout to retain one database.
DB_CONNECTION=sqliteDB_DATABASE=database/database.sqliteDB_FOREIGN_KEYS=ONDB_BUSY_TIMEOUT=5000DB_JOURNAL_MODE=WALDB_SYNCHRONOUS=NORMALThe same extra is advertised for MySQL and MariaDB; the identifier remains mysql. Configure host/port or DB_SOCKET. Each connection applies SET NAMES with charset/collation and the configured strict SQL mode. DB_ENGINE is validated but not applied to table creation in this implementation.
DB_CONNECTION=mysqlDB_HOST=127.0.0.1DB_PORT=3306DB_DATABASE=orionisDB_USERNAME=app_userDB_PASSWORD=replace-with-secretDB_CHARSET=utf8mb4DB_COLLATION=utf8mb4_unicode_ciDB_STRICT=truePostgreSQL
Section titled “PostgreSQL”The identifier is pgsql, not postgresql. Async connections pass charset and search_path as server settings and sslmode to the connector; the sync equivalent uses libpq. TLS defaults to prefer; choose the required policy deliberately.
DB_CONNECTION=pgsqlDB_HOST=127.0.0.1DB_PORT=5432DB_DATABASE=orionisDB_USERNAME=app_userDB_PASSWORD=replace-with-secretDB_CHARSET=UTF8DB_SEARCH_PATH=publicDB_SSLMODE=verify-fullOracle
Section titled “Oracle”Uses the native async oracledb path. Select service or SID; explicit DSN takes priority, followed by TNS. DSN/TNS bypass host/port/service addressing validation. encoding/nencoding are validated compatibility fields and are not passed to the connector.
DB_CONNECTION=oracleDB_HOST=127.0.0.1DB_PORT=1521DB_USERNAME=app_userDB_PASSWORD=replace-with-secretDB_SERVICE_NAME=ORCLSQL Server
Section titled “SQL Server”The system ODBC driver must be installed under the configured name in addition to the Python extra. The template uses ODBC Driver 18. DB_TRUST_SERVER_CERTIFICATE=true accepts certificates without validating the chain: set false with suitable certificates when validation is required. charset is validated but not forwarded as an ODBC parameter.
DB_CONNECTION=sqlserverDB_HOST=127.0.0.1DB_PORT=1433DB_DATABASE=orionisDB_USERNAME=app_userDB_PASSWORD=replace-with-secretDB_ENCRYPT=yesDB_TRUST_SERVER_CERTIFICATE=falseDB_ODBC_DRIVER="ODBC Driver 18 for SQL Server"Amazon Redshift
Section titled “Amazon Redshift”Official AWS connector through a Core engine and dedicated checkout worker. Settings include TLS, IAM and Serverless. No savepoints, SELECT row locks, DML RETURNING or traditional indexes. PK/unique/FK declarations are informational. See dialect limitations.
DB_CONNECTION=redshiftDB_HOST=warehouse.example.testDB_PORT=5439DB_DATABASE=devDB_USERNAME=app_userDB_PASSWORD=replace-with-secretDB_REDSHIFT_SSL=trueDB_REDSHIFT_SSLMODE=verify-fullDB_REDSHIFT_TIMEOUT=30Checking the environment
Section titled “Checking the environment”InstallCommand
Section titled “InstallCommand”The implementation is InstallCommand in orionis.console.commands.support.install. Its metadata is signature="packages", timestamps=False, arguments: ClassVar[list[Argument]] for the options above and description="Install optional Orionis features and development tools.". __init__(self) -> None prepares arguments and console; async handle(self, app: IApplication) -> int performs selection/installation and returns the documented statuses. Normal use goes through Reactor; do not construct this command to install dependencies from HTTP requests.
Constructing Connection validates the identifier without opening sockets. The first query actually checks server access. Missing optional packages or dialects raise MissingDatabaseDependencyException with installation guidance. Unregistered drivers raise UnsupportedDriverException.
Configuration options lists every type and default; connection management shows controller-based checks and injection.