• Flask框架—flask_sqlalchemy组件使用


    一、flask_sqlalchemy组件

    我们之前学过SQLAlchemy,一个独立的数据库关系对象映射,其实在flask中也有官方认可的第三方SQLAlchemy组件,用于处理flask中对象关系映射。

    1.安装flask_sqlalchemy

    pip install flask_sqlalchemy

    2.项目准备

    我们准备一个干净的flask项目,目录结构如下,下面我们基于这个项目,加入flask_sqlachemy使项目操作数据库。

    1.加入flask_sqlalchemy组件

    flask_sqlalchemy_project/__init__.py

    from flask import Flask
    ​
    # 导入Flask-SQLAlchemy中的SQLAlchemy
    from flask_sqlalchemy import SQLAlchemy
    ​
    # 实例化SQLAlchemy
    db = SQLAlchemy()
    # PS : 实例化SQLAlchemy的代码必须要在引入蓝图之前
    from flask_sqlalchemy_lesson.views import user
    ​
    def create_app():
        app = Flask(__name__)
    ​
        # 初始化App配置 这个app配置就厉害了,专门针对 SQLAlchemy 进行配置
        # SQLALCHEMY_DATABASE_URI 配置 SQLAlchemy 的链接字符串儿
        app.config["SQLALCHEMY_DATABASE_URI"] = "mysql+pymysql://root:DragonFire@127.0.0.1:3306/dragon?charset=utf8"
        # SQLALCHEMY_POOL_SIZE 配置 SQLAlchemy 的连接池大小
        app.config["SQLALCHEMY_POOL_SIZE"] = 5
        # SQLALCHEMY_POOL_TIMEOUT 配置 SQLAlchemy 的连接超时时间
        app.config["SQLALCHEMY_POOL_TIMEOUT"] = 15
        app.config["SQLALCHEMY_TRACK_MODIFICATIONS"] = False
    ​
        # 初始化SQLAlchemy , 本质就是将以上的配置读取出来
        db.init_app(app)
    ​
        app.register_blueprint(user)
    ​
        return app

    2.建立models.py文件,ORM模型文件

    from flask_sqlalchemy import SQLAlchemy
    from flask_sqlalchemy_lesson import db
    ​
    # Base = db.Model # 这句话你是否还记的?
    # from sqlalchemy.ext.declarative import declarative_base
    # Base = declarative_base()
    # 每一次我们在创建数据表的时候都要做这样一件事
    # 然而Flask-SQLAlchemy已经为我们把 Base 封装好了
    # 建立User数据表
    class Users(db.Model):
        # 指定一个表名
        __tablename__="user_flask"
        
        # 在SQLAlchemy 中我们是导入了Column和数据类型 Integer 在这里就和db.Model一样,已经封装好了
        id = db.Column(db.Integer,primary_key=True)
        name = db.Column(db.String(32),nullable=False)
    ​
    if __name__ == '__main__':
        from day101_SQLAlchemy.flask_sqlalchemy_lesson import create_app  # 导入数据库的
        app = create_app()
        db.create_all(app=app)

    3.蓝图函数中user.py

    from flask import Blueprint
    from day101_SQLAlchemy.flask_sqlalchemy_lesson.models import Users,db
    ​
    user_bp = Blueprint("user_bp",__name__)
    ​
    ​
    @user_bp.route("/add_user/<username>",methods=["GET","POST"])
    def add_user(username):
        u = Users(name=username)
        db.session.add(u)  # 打开数据库连接窗口
        db.session.commit()
        return "200 add success"
    ​
    @user_bp.route("/get_user/<username>",methods=["GET","POST"])
    def get_user(username):
        u = Users.query.filter(Users.name == username).first()
        return u.name

    4.运行项目manage.py文件

    from day101_SQLAlchemy.flask_sqlalchemy_lesson import create_app
    ​
    app = create_app()
    ​
    if __name__ == '__main__':
        app.run()

    运行项目,就可以访问add_user和get_user来添加数据可查询数据了。

  • 相关阅读:
    VUE可随意拖动的弹窗组件
    入园仪式
    Node启动https服务器
    《高性能javascript》阅读摘要
    浏览器HTTP缓存机制
    使用nightwatch进行E2E测试中文教程
    Puppeteer的入门教程和实践
    Spring AOP 笔记
    ApplicationContext国际化的支持
    Spring ApplicationContext中的”事件传递“笔记
  • 原文地址:https://www.cnblogs.com/ryxiong-blog/p/11279211.html
Copyright © 2020-2023  润新知