SQLAlchemy Storage ================== The `harp.contrib.sqlalchemy_storage` application implements database storage using SQLAlchemy with asynchronous engines. The test suites runs against SQLite, PostgreSQL and MySQL, using various implementations. Other drivers may work too, but are not tested. External documentation: - `SQLAlchemy `_ - `aiosqlite `_ - `asyncpg `_ Configuration ::::::::::::: SQLite ------ SQLite has the benefit of requiring no external service, and is thus the default storage engine. Do not use it in production, as it is slow and have concurrency issues. .. tab-set-code:: .. code-block:: yaml storage: type: sqlalchemy url: sqlite+aiosqlite:///harp.db PostgreSQL ---------- PostgreSQL is the recommended storage engine for production use. .. tab-set-code:: .. code-block:: yaml storage: type: sqlalchemy url: postgresql+asyncpg://user:password@localhost:5432/harp MySQL ----- MySQL / MariaDB is another option for production use. Using aiomysql: .. tab-set-code:: .. code-block:: yaml storage: type: sqlalchemy url: mysql+aiomysql://user:password@localhost:3306/harp Using asyncmy: .. tab-set-code:: .. code-block:: yaml storage: type: sqlalchemy url: mysql+asyncmy://user:password@localhost:3306/harp Common options -------------- Drop tables ........... To drop and recreate all tables, use ``--reset``. It will attempt to drop all tables before running the migrations. .. code-block:: bash harp start ... --reset Logging ....... To instruct SQLAlchemy to log all queries, set ``LOGGING_SQLALCHEMY=INFO`` in your env. .. code-block:: shell LOGGING_SQLALCHEMY=INFO harp start ...