python框架之Flask(6)-flask-sqlalchemy&flask-script&flask-migrate使用

整合SQLAlchemy

安裝

pip3 install flask-sqlalchemy

簡單使用

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from sqlalchemy import Integer, String

app = Flask(__name__)

# 設置鏈接數據庫的URL
app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:root@127.0.0.1:3306/test?charset=utf8'

# 設置每次請求結束後會自動提交數據庫中的改動
app.config['SQLALCHEMY_COMMIT_ON_TEARDOWN'] = True

app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = True
# 查詢時會顯示原始SQL語句
app.config['SQLALCHEMY_ECHO'] = True
db = SQLAlchemy(app)


class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(Integer, primary_key=True)
    name = db.Column(String(32), index=True, nullable=True)


# # 刪除表
# db.drop_all()
# # 建立表
# db.create_all()
db.session.add(User(name='李德剛'))
db.session.commit()
print(User.query.all())

和藍圖一塊兒使用

完整示例地址:python

flask-script

安裝

pip3 install flask-script

使用

修改上述「和藍圖一塊兒使用」示例中的 manage.py 文件:mysql

from flask_script import Manager

from flask_sqlalchemy_test import app

manager = Manager(app)
if __name__ == '__main__':
    manager.run()

命令

而後在當前目錄就能夠向 Django 同樣經過 python manage.py runserver -h [主機地址] -p [端口號] 的方式啓動 flask 項目:git

不只如此,還能夠經過自定製命令來執行函數,修改 manage.py :github

from flask_script import Manager

from flask_sqlalchemy_test import app

manager = Manager(app)


@manager.command
def test_command(num):
    print(num)


@manager.option('-n', '--name', dest='name')
@manager.option('-a', '--age', dest='age')
def test_option(name, age):
    print(name, age)


if __name__ == '__main__':
    manager.run()

flask-migrate

安裝

pip3 install flask-migrate

使用

修改上述「和藍圖一塊兒使用」示例中的 manage.py 以下:sql

from flask_script import Manager
from flask_migrate import Migrate, MigrateCommand
from flask_sqlalchemy_test import app, db

migrate = Migrate(app, db)
manager = Manager(app)
manager.add_command('db', MigrateCommand)

if __name__ == '__main__':
    manager.run()

命令

$ python manage.py db init   # 初始化數據庫,會建立一個migations文件夾,而且會在數據庫中生成一個alembic_version表
$ python manage.py db migrate  # 建立遷移歷史
$ python manage.py db upgrade  # 更新數據庫
相關文章
相關標籤/搜索