GitHub - code-specialist/database-setup-tools: Easy to understand and use python tools that help you to create databases and interact with them
Database Setup Tools for SQLModel / SQLAlchemy
Simplified database lifecycle and session management based on SQLModel / SQLAlchemy.
Any contributions are welcome! But we only accept pull requests that come with tests.
Installation
pip install database-setup-tools
Features
- Database creation on app startup
- Thread-safe database session manager
- Opinionated towards
SQLModelbut feasible with any other framework or puresqlalchemy - Easily use a local database in your tests
Usage
In order to use this library, you need some SQLModel or SQLAlchemy tables and a URI to connect to your database.
With this in place, the DatabaseSetup instance can be created - which contains all provided tools and also automatically
creates the database including all tables.
from sqlmodel import Field, SQLModel from database_setup_tools import DatabaseSetup class User(SQLModel, table=True): """ User database entity / table """ id: int = Field(index=True, primary_key=True) name: str # create database & tables, establish connection with session pool database_setup = DatabaseSetup( model_metadata = SQLModel.metadata, database_uri="postgresql+psycopg2://postgres:postgres@localhost:5432/database", )
Note: The
DatabaseSetupclass acts as singleton, so if you create multiple instances with the same set of parameters, you will always get the same instance back instead of creating a new one.
After the setup is created, you can get a scoped session via the provided session manager and use it for database transactions.
# get scoped session session = next(database_setup.session_manager.get_session()) # do stuff in session user = User(name="Alice") session.add(user) session.commit()
The DatabaseSetup instance also provides lifecycle methods allowing to manually control the database:
database_setup.create_database() database_setup.drop_database()
Development
Testing
- Spin up databases for local integration tests:
docker-compose -f tests/docker-compose.yaml up -d - Create virtual environment & install dependencies:
poetry install - Run tests:
poetry run pytest