【Flask之Flask-SQLAlchemy】 -- 2019-08-09 10:15:44

原文: http://106.13.73.98/__/153/

安装:pip install Flask-SQLAlchemy

Flask-SQLAlchemy 比起 SQLAlchemy 更加的简单自如,用法几乎一模一样,就是在配置和启动上需要注意与 Flask 的配合。

我们的项目目录结构如下:
在这里插入图片描述


manager.py

import test01

app = test01.create_app()

if __name__ == '__main__':
    app.run()

__init__.py

from flask import Flask

# 导入flask_sqlalchemy.SQLAchemy
from flask_sqlalchemy import SQLAlchemy

# 实例化SQLAlchemy
db = SQLAlchemy()
# 此操作要在导入蓝图之前(蓝图中会用到此对象)

from .views.user import user


def create_app():
    app = Flask(__name__)
    app.config['DEBUG'] = True

    # 基于上下文配置SQLAchemy
    app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://zyk:blog@zyk@localhost:3306/db03?charset=utf8'
    app.config['SQLALCHEMY_POOL_SIZE'] = 10  # SQLAlchemy 的连接池大小
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

    # 初始化app,本质上是将以上的配置读取出来
    db.init_app(app)
    # 可通过init_app查看SQLAlchemy的配置关键字

    app.register_blueprint(user)
    return app

models.py

# 创建ORM对象,及关联数据表

from test01 import db
# 此时的db是干净的,未添加任何配置
# db.Model ORM模型基类


# 创建User数据表
class User(db.Model):
    __tablename__ = 'user'
    id = db.Column(db.INT, primary_key=True)  # 自动自增
    name = db.Column(db.VARCHAR(32))


if __name__ == '__main__':
    # 绕过应用上下文创建关联数据表,剩下的就是应用了
    from test01 import create_app
    app = create_app()
    db.drop_all(app=app)
    db.create_all(app=app)


# 运行后将创建数据表

user.py

from flask import Blueprint
from test01 import db
from test01.models import User


user = Blueprint('user', __name__)


@user.route('/user')
def user_func():

    # 添加数据
    db.session.add(User(name='user01'))
    db.session.commit()

    # 查询数据
    user_obj = db.session.query(User).first()

    return user_obj.name

原文: http://106.13.73.98/__/153/

猜你喜欢

转载自www.cnblogs.com/gqy02/p/11325454.html