zoukankan      html  css  js  c++  java
  • 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  # 更新数据库
  • 相关阅读:
    非同名数据库导入sql
    mybatis中的异常
    使用MyBatis时为什么Dao层不需要@Repository
    springboot项目启动后执行一段程序的方式
    构建SpringBoot项目
    springboot项目添加webapp目录
    springboot项目启动异常
    使用restTemplate出现的异常
    Spring中Bean的属性赋值@Value()---使用类配置的方式
    使用BeanUtils复制Java对象
  • 原文地址:https://www.cnblogs.com/zze46/p/10161172.html
Copyright © 2011-2022 走看看