FastAPI db depency

  1. use sqlalchemy

from databases import Database
from sqlalchemy import create_engine
from sqlalchemy.orm import sessionmaker

SQLALCHEMY_DATABASE_URL = f”sqlite:///app.db}”

engine = create_engine(SQLALCHEMY_DATABASE_URL, connect_args={“check_same_thread”: False})
SessionLocal = sessionmaker(autocommit=False, autoflush=False, bind=engine)

Dependency

def get_db():

db = SessionLocal()
try:
    yield db
finally:
    db.close()

next_db_connection = next(get_db())

  1. or use database create async connection

class SqliteConn:

def __init__(self, db_name):
    self.database = Database(f"sqlite:///{db_name}")

def __enter__(self):
    try:
        self.database.connect()
        return self.database
    except Exception as e:
        logger.debug("There is an exception when connect to database file:{}".format(e))

def __exit__(self, exc_type, exc_val, exc_tb):
    self.database.disconnect()
    if exc_val:
        raise