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:[email protected]: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来添加数据可查询数据了。

猜你喜欢

转载自www.cnblogs.com/ryxiong-blog/p/11279211.html