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())
和蓝图一起使用
完整示例地址:
flask-script
安装
pip3 install flask-script
使用
修改上述“和蓝图一起使用”示例中的 manage.py 文件:
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 项目:
不仅如此,还可以通过自定制命令来执行函数,修改 manage.py :
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 如下:
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 # 更新数据库
Java博客目录 | Python博客目录 | C#博客目录