• 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  # 更新数据库
  • 相关阅读:
    for循环练习-----ATM取款
    面向对象基础项目----图书管理系统(数组)
    Java基础学习(二)-- 二维数组、String、StringBuffer以及类和对象之详解
    Java基础学习(一) -- Java环境搭建、数据类型、分支循环等控制结构、简单一维数组详解
    js 解决由于&#65279(bom文件格式)产生的空白行
    自适应网站设计对百度友好的关键:添加applicable-device标签(转)
    浏览器内核控制标签--meta
    HTML5的元素与结构标签
    <img>标签的补充
    HTML <head> 头部中的各类标签
  • 原文地址:https://www.cnblogs.com/zze46/p/10161172.html
Copyright © 2020-2023  润新知