ORM操作有兩種方式。
1.模型遷移到數據庫中生成表,codefirst:使用flask-migrate:
需要flask-script:
from flask_script import Manager
from flask_migrate import Migrate ,MigrateCommand
from flask import Flask
app = Flask(__name__)
manager = Manager(app) # 注冊App到腳本
Migrate(app,db) # 注冊App和ORM對象
manager.add_command('db',MigrateCommand) # db為命令 即執行python manager.py db 命令
python manager.py db init:初始化
python manager.py db migrate:生成遷移腳本
python manager.py db upgrade:映射到數據庫
2.已經建好數據庫==>模型:使用flask-sqlacodegen:
安裝:pip install flask-sqlacodegen
使用window環境下:
# 整體映射database數據庫並寫入model.py文件 flask-sqlacodegen \ mysql://username:password@127.0.0.1/database \ --outfile 'model.py' \ --flask # 映射table數據表並寫入table.py文件 flask-sqlacodegen \ mysql://username:password@127.0.0.1/database \ --table table \ --outfile 'model.py' \ --flask
flask-sqlacodegen mysql://root:@127.0.0.1/db_name --outfile "models/model.py" --flask
flask-sqlacodegen mysql://root:@127.0.0.1/db_name --tables user --outfile "models/user.py" --flask
常見的一些問題:
1.執行migrate命令時候出現如下錯誤,是因為沒有檢測到models模塊的存在,可以在注冊藍圖的代碼中導入下models
2.出現 ERROR [alembic.env] Can't locate revision identified by 'a21a614f5bbc'
刪掉數據庫中的表: alembic_version
3.出現找不到路徑,重新init一下就好了