Home  >  Article  >  Backend Development  >  Flask-Migrate: Migrate databases using Python

Flask-Migrate: Migrate databases using Python

王林
王林Original
2023-06-17 10:04:412185browse

Flask-Migrate: Using Python to migrate databases

With the continuous development of web development, the importance of databases has become increasingly prominent. During the development process, we need to modify and migrate data. However, if you modify it directly on the database, it may bring unpredictable risks. At this time, Flask-Migrate came into being. In this article, we will focus on the use of Flask-Migrate and how to migrate databases through Python.

Introduction to Flask-Migrate

Flask-Migrate is a database migration framework used in conjunction with the Flask framework. It provides an easy way to version and migrate databases. It allows us to make modifications to the database without deleting any data, which means we don't need to worry about data loss or incompatibility. At the same time, Flask-Migrate also supports a variety of databases, including SQLite, MySQL and PostgreSQL.

Installation of Flask-Migrate

Before we start using Flask-Migrate, we need to install it first. Flask-Migrate can be easily installed using the pip command:

pip install Flask-Migrate

After the installation is completed, we can start using Flask-Migrate.

Usage of Flask-Migrate

Before using Flask-Migrate, we need to initialize the Flask application. Here, we use a simple Flask program as an example:

from flask import Flask
from flask_sqlalchemy import SQLAlchemy

app = Flask(__name__)
app.config['SQLALCHEMY_DATABASE_URI'] = 'sqlite:///test.db'
db = SQLAlchemy(app)

class User(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    username = db.Column(db.String(80), unique=True)
    email = db.Column(db.String(120), unique=True)

    def __init__(self, username, email):
        self.username = username
        self.email = email

    def __repr__(self):
        return '<User %r>' % self.username

The above code uses the Flask_sqlalchemy extension to configure the database connection. It defines a User model and related properties.

Initialize the database

Before performing database migration, we need to create the database first. In Flask, you can use the db.create_all() function to create all defined models:

from app import db
db.create_all()

At this time, a SQLite database named test.db will be automatically created in the database, and The table has been created according to the defined model properties.

Migrate database

Based on the above initialization of the database, we can migrate the database. Performing database migration requires two steps: generating the migration script and applying the migration script.

Generate migration script

The command to generate migration script is:

flask db migrate

After executing this command, Flask-Migrate will automatically detect the structure of the model definition and database, and will detect Generate a migration script based on the differences. At this point, we can view the script in the migrations/versions folder in the project folder. This script is a Python module that contains the differences between the current model and the database.

Apply migration script

After generating the migration script, you need to apply it to the database. This process is called migration.

flask db upgrade

After executing this command, Flask-Migrate will upgrade the table structure based on the generated migration script. At this point, we can view the changed table structure in the database.

Summary

In this article, we introduced the basic usage of Flask-Migrate. With Flask-Migrate, we can easily manage the structure of database tables. Its advantage is that it can conveniently maintain data security and consistency, and can be easily versioned. In actual projects, if we need to modify and manage the database, we can choose to use the Flask-Migrate tool.

The above is the detailed content of Flask-Migrate: Migrate databases using Python. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn