zoukankan      html  css  js  c++  java
  • 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

     七、分享文件结构

  • 相关阅读:
    MySQL的简单使用
    GoLang基础—变量、数据类型、常量
    网络编程
    前端
    并发编程
    Pyspider的简单介绍和初使用
    Python 生成requirements文件以及使用requirements.txt部署项目
    redis简单了解与简单使用
    腾讯云短信接口完成验证码功能
    git的基础使用
  • 原文地址:https://www.cnblogs.com/lee-xingxing/p/12397366.html
Copyright © 2011-2022 走看看