Skip to content

noamtamir/atlas-provider-sqlalchemy

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

12 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

DRAFT

atlas-provider-sqlalchemy

Atlas provider for sqlalchemy

Load SQLAlchemy models into an Atlas project.

Use-cases

  1. Declarative migrations - use a Terraform-like atlas schema apply --env sqlalchemy to apply your SQLAlchemy schema to the database.
  2. Automatic migration planning - use atlas migrate diff --env sqlalchemy to automatically plan a migration from the current database version to the SQLAlchemy schema.

Installation

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

Standalone

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"
}

As Python Script

...
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"
}

Usage

Once you have the provider installed, you can use it to apply your SQLAlchemy schema to the database:

Apply

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.

Diff

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 

Supported Databases

The provider supports the following databases:

  • MySQL
  • MariaDB
  • PostgreSQL
  • SQLite
  • Microsoft SQL Server
  • Oracle

Issues

Please report any issues or feature requests in the ariga/atlas repository.

License

This project is licensed under the Apache License 2.0.

About

Atlas provider for sqlalchemy

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published