Atlas provider for sqlalchemy
Load SQLAlchemy models into an Atlas project.
- Declarative migrations - use a Terraform-like
atlas schema apply --env sqlalchemy
to apply your SQLAlchemy schema to the database. - Automatic migration planning - use
atlas migrate diff --env sqlalchemy
to automatically plan a migration from the current database version to the SQLAlchemy schema.
Install Atlas from macOS or Linux by running:
curl -sSf https://atlasgo.sh | sh
See atlasgo.io for more installation options.
Install the provider by running:
pip install atlas-provider-sqlalchemy
If all of your SQLAlchemy models exist in a single package, you can use the provider directly to load your SQLAlchemy schema into Atlas.
In your project directory, create a new file named atlas.hcl
with the following contents:
data "external_schema" "sqlalchemy" {
program = [
"atlas-provider-sqlalchemy",
"--dialect", "mysql", // postgresql | mysql | oracle | sqlite | mssql
]
}
env "sqlalchemy" {
src = data.external_schema.sqlalchemy.url
dev = "docker://mysql/8/dev"
}
...
If you want to use the provider as a python script, you can use the provider as follows:
Create a new file named load_models.py
with the following contents:
# import all models
from models import User, Task;
from atlas_provider_sqlalchemy import print_ddl
print_ddl("mysql", [User, Task])
Next, in your project directory, create a new file named atlas.hcl
with the following contents:
data "external_schema" "sqlalchemy" {
program = [
"python",
"load_models.py"
]
}
env "sqlalchemy" {
src = data.external_schema.sqlalchemy.url
dev = "docker://mysql/8/dev"
}
Once you have the provider installed, you can use it to apply your SQLAlchemy schema to the database:
You can use the atlas schema apply
command to plan and apply a migration of your database to your current SQLAlchemy schema. This works by inspecting the target database and comparing it to the SQLAlchemy schema and creating a migration plan. Atlas will prompt you to confirm the migration plan before applying it to the database.
atlas schema apply --env sqlalchemy -u "mysql://root:password@localhost:3306/mydb"
Where the -u
flag accepts the URL to the
target database.
Atlas supports a version migration
workflow, where each change to the database is versioned and recorded in a migration file. You can use the
atlas migrate diff
command to automatically generate a migration file that will migrate the database
from its latest revision to the current Sequelize schema.
atlas migrate diff --env sqlalchemy
The provider supports the following databases:
- MySQL
- MariaDB
- PostgreSQL
- SQLite
- Microsoft SQL Server
- Oracle
Please report any issues or feature requests in the ariga/atlas repository.
This project is licensed under the Apache License 2.0.