alembic迁移数据表

alembic迁移数据表

安装alembic

 pip install alembic

初始化项目

alembic init alembic

修改 根目录\alembic.ini

执行完成之后你会发现根目录多了个ini配置文件和alembic文件夹,我们需要稍微修改下配置文件:

sqlalchemy.url = mysql+pymysql://root:bjhit%%402022@172.16.30.55:3306/darknet_target

注意password需要使用%%40来代替@符号;用以下代码得到:

SQLALCHEMY_DATABASE_URL = f'mysql+pymysql://{DB_USER}:{urlquote(DB_PASSWD).replace("%", "%%")}@{DB_HOST}:{DB_PORT}/{DB_NAME}?charset=utf8'
print(SQLALCHEMY_DATABASE_URL)

修改 根目录\alembic\env.py

改两个地方:

  • 第一个地方 Base

    注释 
    # target_metadata = None
    添加上以下
    from target_app.models import Base       # 具体为这个:   Base = declarative_base()  # 创建一个Base类
    target_metadata = Base.metadata 
    
  • 第二个地方 engine

    注释
        # connectable = engine_from_config(
        #     config.get_section(config.config_ini_section, {}),
        #     prefix="sqlalchemy.",
        #     poolclass=pool.NullPool,
        # )
     添加上以下
        from target_app.database import engine
        connectable = engine
    

生成迁移文件

-m 改成具体的操作,比如第一次就是建表,第二次就是更新什么地方,类似git commit -m的操作,一个标注。

alembic revision --autogenerate -m "create inital tables"

执行迁移操作

alembic upgrade head

注意

如果删除了versions中生成的迁移文件,需要同步删除数据库表alembic_version表中的数据,否则会报以下错误:

(venv) C:\Users\17629\Desktop\code\target>alembic revision --autogenerate -m "create inital tables"
2023-11-02 17:22:52,033  DEBUG mylogger line-30  init_logger  logger init done
DEBUG [target] logger init done
INFO  [alembic.runtime.migration] Context impl MySQLImpl.
INFO  [alembic.runtime.migration] Will assume non-transactional DDL.
ERROR [alembic.util.messaging] Can't locate revision identified by '0267fae60883'
FAILED: Can't locate revision identified by '0267fae60883'
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值