Migrations
Let’s learn to perform migrations in databases.
We'll cover the following...
- Alembic
- Perform migrations using Alembic
- Set environment variable requirement
- Configure Alembic
- Autogenerate database versions
- Apply migrations
- Connect to the database
- Check the Alembic version
- Select the room table
- Retrieve data from the room table
- Data insertion and retrieval in the room table
- Test the updated code
We need a way to create tables that correspond to the objects defined in rentomatic/repository/postgres_objects.py.
Alembic
The best strategy when we use an ORM like SQLAlchemy is to create and run migrations. For this, we can use Alembic.
Perform migrations using Alembic
First of all, let’s initialize Alembic. In the project’s main directory (where manage.py is stored), let’s run the command below:
$ alembic init migrations
The command above creates a directory called migrations that contains Alembic’s configuration files and the migrations that will be created in migrations/versions. It also creates the alembic.ini file, which contains the configuration values. The name migrations is completely arbitrary, so we can also choose to use a different one if we prefer.
Set environment variable requirement
The specific file we need to adjust to make Alembic aware of our models and our database is migrations/env.py.
Through config.set_section_option, we add relevant configuration values to the main Alembic INI file section, config.config_ini_section, extracting them from the environment variables. We also import the file that contains the SQLAlchemy objects.
Configure Alembic
We can find documentation on configuring Alembic at https://alembic.sqlalchemy.org/en/latest/api/config.html.
Once Alembic is configured, we need to change the alembic.ini file to use the new variables as follows:
The %(VARNAME)s syntax is the basic variable interpolation used by ConfigParser ...