SQLAlchemy
This is the official documentation of the forestadmin-agent-django
and forestadmin-agent-flask
Python agents.
The SQLAlchemy data source allows importing collections from all models class that extends the class build with declarative_base
or that inherit from sqlalchemy.orm.DeclarativeBase
.
To make everything work as expected, you need to install the package sqlalchemy
.
Note that:
SQLAlchemy relationships will be respected
from forestadmin.datasource_sqlalchemy.datasource import SqlAlchemyDatasource
from sqlalchemy.orm import DeclarativeBase
class Base(DeclarativeBase):
pass
# or
from sqlalchemy.orm import declarative_base
Base = declarative_base()
agent.add_datasource(
SqlAlchemyDatasource(
Base,
db_uri="postgres://user:pass@localhost:5432/myDatabase",
)
)
the db_uri
is mandatory only in the cases when the engine cannot be found in the base class.
engine = create_engine("postgres://user:pass@localhost:5432/myDatabase", echo=False)
Base = declarative_base(engine)
agent.add_datasource(SqlAlchemyDatasource(Base))
When using the package Flask-SQLAlchemy, the setup is a bit different. In most of the case, the db_uri
is not needed
from forestadmin.datasource_sqlalchemy.datasource import SqlAlchemyDatasource
from flask_sqlalchemy import SQLAlchemy
db = SQLAlchemy()
class Address(db.Model):
__tablename__ = "address"
id = Column(Integer, primary_key=True)
# ...
agent.add_datasource(SqlAlchemyDatasource(db))
Enable support of live queries
By enabling this feature, users with the required permission level can create Live Query components (charts ↗, analytics charts ↗ and segments ↗), allowing them to create more sophisticated requests to your database, by leveraging the underlying query language, SQL in this case.
You can enable this feature by setting a connection name
(works as an identifier) when creating your datasource. This connection name
will be reflected on the UI when configuring a LiveQuery component, it should have a clear meaning for your Forest users.
agent.add_datasource(
SqlAlchemyDatasource(
Base, db_uri="postgres://user:pass@localhost:5432/mainDatabase", live_query_connection="main_database"
),
)
agent.add_datasource(
SqlAlchemyDatasource(
OtherBase, db_uri="postgres://user:pass@localhost:5432/secondaryDatabase", live_query_connection="secondary_database"
),
)
After this point you should see on ForestAdmin an input asking for the connection
next to the live query
text input.
Last updated
Was this helpful?