搜尋

首頁  >  問答  >  主體

flask - python manage.py db upgrade 语句不起作用

最近在学Flask,书籍是《Flask.Web.Development》,其中数据库迁移工具使用的是Flask-Migrate,书中提到创建迁移脚本后更新数据库使用python manage.py db upgrade就可以更新数据库,但是我在使用过程中模型修改后使用上述命令并不起作用,每次都需要删除所有表然后重建,不知道使用过程中在哪一步出错了?

可以参考这个文章,Flask Web Development —— 数据库(下)
就是翻译我提到的书籍;第一步和第二步都已经做了,按照书中所说,当模型更改的时候只要执行更新语句,数据库对表进行更新而不会删除表中的数据,但是现在不起作用,比如我模型增加了字段,执行语句后数据库表对应字段没有增加。

ringa_leeringa_lee2813 天前1021

全部回覆(3)我來回復

  • PHP中文网

    PHP中文网2017-04-17 14:00:26

    資料庫遷移一般分為兩步驟

    • 產生遷移的腳本
    • 運行腳本,更改資料庫

    upgrade 之前,你需要 migrate

    修改了 model 之後
    需先 python manage.py db migrate
    然後才 python manage.py db upgrade

    回覆
    0
  • 阿神

    阿神2017-04-17 14:00:26

    我遇到的問題是,更改了已有的欄位類型migrage之後。遷移腳本裡沒有任何的更改。求解。 。 。 。

    # revision identifiers, used by Alembic.
    revision = '5588e49798f0'
    down_revision = '53ffda24441'
    
    from alembic import op
    import sqlalchemy as sa
    
    
    def upgrade():
        ### commands auto generated by Alembic - please adjust! ###
        pass
        ### end Alembic commands ###
    
    
    def downgrade():
        ### commands auto generated by Alembic - please adjust! ###
        pass
        ### end Alembic commands ###

    回覆
    0
  • 伊谢尔伦

    伊谢尔伦2017-04-17 14:00:26

    題主的問題好像已經超越了原書的範圍了。

    第一次輸入python hello.py db upgrade第一次相當於db.creat_all(),以後再輸入python hello.py db upgrade才是更新資料庫。而題主已經是做了第一步,然後現在嘗試更新失敗。

    所以問題應該是出現在更新資料庫這一步驟上面。貼出你是如何後​​續修改資料庫才能繼續分析問題出在哪裡。
    我也是目前在學,不知道這麼理解是否正確。

    回覆
    0
  • 取消回覆