先說一下如何把數據庫與Flask框架下的Python後臺(服務器)連接起來:
1、模型初始化環境:
命令:python manage.py db init
cmd的迴應:
Creating directory F:\code\flask_project\migrations ... done
Creating directory F:\code\flask_project\migrations\versions ... done
Generating F:\code\flask_project\migrations\alembic.ini ... done
Generating F:\code\flask_project\migrations\env.py ... done
Generating F:\code\flask_project\migrations\env.pyc ... done
Generating F:\code\flask_project\migrations\README ... done
Generating F:\code\flask_project\migrations\script.py.mako ... done
Please edit configuration/connection/logging settings in 'F:\\code\\flask_project\\migrations\\alembic.ini' before proceeding.
這時就可以在項目文件夾中看到子文件夾migrations
2、把表中模型映射到數據庫中 先生成遷移文件
命令:python manage.py db migrate
cmd迴應:
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.autogenerate.compare] Detected added table 'answer'
Generating F:\code\flask_project\migrations\versions\3007cf54a530_.py ... done
這時打開migration文件夾後再打開versions文件夾會看到形如3007cf54a530_.py文件和3007cf54a530_.cpy文件
3、再把遷移文件映射到數據庫中
命令:python manage.py db upgrade
cmd迴應:
INFO [alembic.runtime.migration] Context impl MySQLImpl.
INFO [alembic.runtime.migration] Will assume non-transactional DDL.
INFO [alembic.runtime.migration] Running upgrade -> 3007cf54a530, empty message
以上是正常的情況
今天我手殘,項目做到一半把migrations文件誤刪了,而且這個文件刪除後是無法找回的,回收站裏是找不到的
於是我重新執行步驟一,成功
執行步驟二,報錯:
alembic.util.exc.CommandError: Can't locate revision identified by '68c8e45e399c'
於是就懵逼了,後來終於找到一篇相關文章
把問題解決了
我的理解是:
當把後臺與數據庫建立關係後,雙方會分別產生一個“接口”,後臺的“接口”是migrations文件夾中的versions文件夾中的文件;數據庫的“接口”是這個表“alembic_version”(蒸餾器版本?什麼鬼名字?)
我把migrations刪除後,alembic_version沒有改變。當我新建一個migrations後,兩個“接口”對不上了,所以會報錯:
alembic.util.exc.CommandError: Can't locate revision identified by '68c8e45e399c'
所以這種錯誤最簡單的解決辦法就是把數據庫中的alembic_version表刪掉,然後就可以繼續後面的操作了
其他關於用alembic進行版本控制的東西我就不多說了,有興趣的請自行百度