Config Classes — Aquilia Documentation
Comprehensive guide and documentation for Config Classes in the Aquilia framework. View API reference, examples, and implementation patterns.
Docs / Database / Config Classes Config Classes Typed, IDE-friendly configuration dataclasses for each backend. No URL string typos — just Python with autocompletion. DatabaseConfig (base) All backend configs inherit from DatabaseConfig. Common pool, retry, and behavior settings. Field Default Description ))} SqliteConfig built-in SQLite via Aquilia's native async SQLite driver. No extra packages required. WAL mode enabled by default for concurrent reads. from aquilia.db.configs import SqliteConfig # File-based cfg = SqliteConfig(path="data/app.db") # In-memory (great for tests) cfg = SqliteConfig(path=":memory:") # Production settings cfg = SqliteConfig( path="data/prod.db", journal_mode="WAL", # WAL | DELETE | TRUNCATE | PERSIST | MEMORY | OFF foreign_keys=True, # PRAGMA foreign_keys = ON busy_timeout=5000, # PRAGMA busy_timeout = 5000 (ms) auto_migrate=True, conn_health_checks=True, ) # From URL cfg = SqliteConfig.from_url("sqlite:///data/app.db") Field Default Description ))} PostgresConfig pip install asyncpg PostgreSQL via asyncpg. Supports SSL, connection pool min/max, and schema selection. Both name and database are accepted as the database name. from aquilia.db.configs import PostgresConfig # Minimal cfg = PostgresConfig( host="localhost", database="mydb", # or: name="mydb" user="admin", password="secret", ) # Production with SSL + pooling cfg = PostgresConfig( host="db.example.com", port=5432, database="prod_db", user="app_user", password="s3cr3t", sslmode="require", # disable | allow | prefer | require | verify-full schema="public", pool_size=20, pool_min_size=5, pool_max_size=50, conn_health_checks=True, conn_max_age=600, ) # From URL cfg = PostgresConfig.from_url("postgresql://admin:secret@localhost:5432/mydb", pool_size=10) Field Default Description ))} MysqlConfig pip install aiomysql MySQL and MariaDB via aiomysql. Defaults to utf8mb4 charset with utf8mb4_unicode_ci collation. from aquilia.db.configs import MysqlConfig cfg = MysqlConfig( host="mysql.example.com", database="prod_db", # or: name="prod_db" user="app_user", password="s3cr3t", charset="utf8mb4", collation="utf8mb4_unicode_ci", pool_size=15, ) cfg = MysqlConfig.from_url("mysql://root:pass@localhost:3306/mydb") Field Default Description ))} OracleConfig pip install oracledb Oracle via python-oracledb. Thin mode by default — no Oracle Client installation required. Use service_name or sid. from aquilia.db.configs import OracleConfig # Service name (recommended) cfg = OracleConfig( host="oracle.example.com", database="PROD_SERVICE", # alias for service_name user="app_user", password="tiger", pool_size=20, ) # SID-based cfg = OracleConfig( host="oracle.example.com", sid="ORCL", user="scott", password="tiger", ) # Thick mode (requires Oracle Client) cfg = OracleConfig( host="oracle.example.com", database="PROD", user="scott", password="tiger", thick_mode=True, encoding="UTF-8", ) cfg = OracleConfig.from_url("oracle://scott:tiger@oracle.example.com:1521/PROD") Using with Integration Pass any config class to Integration.database(config=...) in your workspace: from aquilia.workspace import Workspace, Module from aquilia.integrations import Integration from aquilia.db.configs import PostgresConfig, SqliteConfig workspace = ( Workspace("my-api") .add_module(Module("users")) .integrate(Integration.database( config=PostgresConfig( host="db.example.com", database="prod_db", user="admin", password="secret", pool_size=20, sslmode="require", ) )) .build() ) # Test workspace with in-memory SQLite test_workspace = ( Workspace("my-api-test") .add_module(Module("users")) .integrate(Integration.database( config=SqliteConfig(path=":memory:", auto_migrate=True) )) .build() ) from_url() Classmethod Every config class provides a from_url() classmethod. DatabaseConfig.from_url() auto-detects the backend from the URL scheme. from aquilia.db.configs import DatabaseConfig # Auto-detect (returns the correct subclass) cfg = DatabaseConfig.from_url("postgresql://admin:secret@localhost/mydb") # → PostgresConfig instance cfg = DatabaseConfig.from_url("sqlite:///data/app.db") # → SqliteConfig instance # Override specific fields cfg = DatabaseConfig.from_url("postgresql://admin:secret@localhost/mydb", pool_size=20) AquiliaDatabase SQLite Backend )
Go to Homepage