flask的orm框架使用方法(SQLAlchemy)

创建tomysql文件夹,里面有3个文件main.py,mysql_db.py,schema.py。

mysql_db.py

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
from flask_marshmallow import Marshmallow

# 添加pymysql驱动,连接MySQL数据库
import pymysql
pymysql.install_as_MySQLdb()

# 创建MySQL单实例
mysql_db = SQLAlchemy()

# 创建Schema
mysql_schema = Marshmallow()


# 初始化MySQL数据库
def init_mysql_db(app: Flask):

    # 配置MySQL数据库url
    app.config["SQLALCHEMY_DATABASE_URI"] = "mysql://root:qyydhm@127.0.0.1:3306/flask_base?charset=utf8mb4"
    # 关闭sqlalchemy自动跟踪数据库
    app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False

    # 显示底层执行的SQL语句
    # app.config['SQLALCHEMY_ECHO'] = True

    # 解决‘No application found. Either work inside a view function or push an application context.’
    app.app_context().push()

    # 初始化app
    mysql_db.init_app(app)

    # 初始化schema
    mysql_schema.init_app(app)





# 初始化table
def init_table():
    # 删除表
    mysql_db.drop_all()
    # 创建表
    mysql_db.create_all()

schema.py

from tomysql.mysql_db import mysql_db as db
from tomysql.mysql_db import mysql_schema as ma


# 创建用户表
class User(db.Model):
    # 用户
    __tablename__ = "tf_user"
    id = db.Column(db.Integer, nullable=False, primary_key=True, autoincrement=True)
    name = db.Column(db.String(32), nullable=False, unique=True)
    pwd = db.Column(db.String(32), nullable=False)
    def __repr__(self):
        # 显示对象中的信息
        return "User object: name=%s" % self.name


class UserSchema(ma.SQLAlchemyAutoSchema):
    class Meta:
        model = User
        # 反序列化阶段时,直接返回模型对象
        load_instance = True

main.py

from flask import Flask
from tomysql.mysql_db import mysql_db as db
from tomysql.mysql_db import init_mysql_db,init_table
from tomysql.schema import User,UserSchema


app = Flask(__name__)
init_mysql_db(app)
init_table()


def register_user():
    user = User()
    user.name = "mason"
    user.pwd = "123456"
    # 添加数据
    db.session.add(user)
    db.session.commit()
    user_json = UserSchema().dump(user)
    print(user_json)


@app.route("/register", methods=['GET'])
def register():
    register_user()
    return "register success!"


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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值