Flask 第八话之数据库 -- 小插曲alembic -- sqlalchmey迁移工具

一、安装

pip install alembic

二、初始化仓库

在cmd终端初始化,cd到目标文件夹中创建一个仓库

alembic init 文件夹名

三、修改配置信息

1.修改alembic.ini配置信息

sqlalchemy.url = mysql+pymysql://root:123456@localhost/db_demo?charset=utf8

2.为了使模型类更新数据库,需要在env.py文件中设置target_metadata,默认target_metadata=None。使用sys模块把当前项目的路径导入path中

import sys,os
# 1.__file__:当前文件(env.py)
#2.os.path.dirname(__file__):获取当前文件的目录
#3.os.path.dirname(os.path.dirname(__file__)):获取当前文件目录的上一级目录
#4.sys.path: python寻找导入的包的所有路径
sys.path.append(os.path.dirname(os.path.dirname(__file__)))

import models

target_metadata = models.Base.metadata

四、建立数据库模型

from sqlalchemy import create_engine,Column,String,Integer,Enum
from sqlalchemy.ext.declarative import declarative_base


HOSTNAME = '127.0.0.1'
PORT = 3306
DATABASE = 'db_demo'
USERNAME = 'root'
PASSWORD = '123456'

# 链接数据库的字符串,固定格式
DB_URL = "mysql+pymysql://{username}:{password}@{host}:{port}/{db}?charset=utf8".format(
    username = USERNAME,
    password = PASSWORD,
    host = HOSTNAME,
    port = PORT,
    db = DATABASE,
)

engine = create_engine(DB_URL)

Base = declarative_base(engine)

class User(Base):
    __tablename__ = "user"
    id = Column(Integer,primary_key=True,autoincrement=True)
    name = Column(String(50),nullable=False)
    age = Column(Integer,default=0)
    sex = Column(String(50),Enum("",""))

五、生成迁移脚本

alembic revision --autogenerate -m "第一次提交"

六、将生成的迁移脚本映射到数据库中

# 更新数据库
alembic upgrade head
# 降级
alembic downgrade head

 七、分享文件结构

猜你喜欢

转载自www.cnblogs.com/lee-xingxing/p/12397366.html