Multiple databases

SQLAlchemy offers some partitioning strategies to use multiple databases per session. An example from the SQLAlchemy docs is:

from sqlalchemy.orm.session import sessionmaker, Session

engine1 = create_engine("postgresql+psycopg2://db1")
engine2 = create_engine("postgresql+psycopg2://db2")

Session = sessionmaker()

# bind User operations to engine 1, Account operations to engine 2
Session.configure(binds={User: engine1, Account: engine2})

With this Session the User table will be in engine1 and Account will be in engine2.

And when instantiating the Admin object you can use the sessionmaker factory you have:

from sqladmin import Admin


admin = Admin(app=app, session_maker=Session)
admin.add_view(...)

This is different from other places where you could just use engine argument, and now you can use the sessionmaker factory.

Tip

In addition to being useful for partitioning, you could use the sessionmaker factory instead of the engine if you have one database for your application, SQLAdmin internally creates a sessionmaker for your engine but if you pass the sessionmaker you can keep any configuration you have on your sessions.