igortg/pytest-async-sqlalchemy

Doubt: Is this package available only for postgres?

Closed this issue · 1 comments

Hi, I'm writing my unit test using Sqllite and SqlAlchemy and I'm trying to use this package, but seeing the code looks like the package isen't prepared to work with Sqllite. am I wrong?

The fail occur in code bellow, the line text(f"SELECT 1 FROM pg_database WHERE datname='{database_name}'"):

# pytest_async_sqlalchemy.py
async def create_database(url: str):
    url_object = make_url(url)
    database_name = url_object.database
    dbms_url = url_object.set(database=POSTGRES_DEFAULT_DB)
    engine = create_async_engine(dbms_url, isolation_level="AUTOCOMMIT")

    async with engine.connect() as conn:
        c = await conn.execute(
            text(f"SELECT 1 FROM pg_database WHERE datname='{database_name}'")
        )
        database_exists = c.scalar() == 1

    if database_exists:
        await drop_database(url_object)

    async with engine.connect() as conn:
        await conn.execute(
            text(f'CREATE DATABASE "{database_name}" ENCODING "utf8" TEMPLATE template1')
        )
    await engine.dispose()
                LOG.debug("executing %s", function)
>               result = function()
E               sqlalchemy.exc.OperationalError: (sqlite3.OperationalError) no such table: pg_database
E               [SQL: SELECT 1 FROM pg_database WHERE datname='./test.db']
E               (Background on this error at: https://sqlalche.me/e/14/e3q8)

Hi Luis

As far as I know, SQLAlchemy async support currently only works with PostgreSQL.

There is some 3rd party libraries that makes SQLAlchemy works asynchronously with other databases, but I don't plan to add this kind of support in the near future.