flask连接mysql数据库操作增删改查的简单封装函数

Y17


1、创建python文件夹,命名为app,创建并返回一个WGSI应用程序对象

from flask import Flask
app = Flask(__name__)

# 定义函数封装路由配置
def path(route, fun, *, methods=['GET','POST'], name=None):
    app.add_url_rule(route, view_func=fun, methods=methods, endpoint=name)

2、封装连接数据库操作
from flask_sqlalchemy import SQLAlchemy
from flask4.app import app

app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://root:[email protected]/stu'
db = SQLAlchemy(app)

class DBO:
    # 定义函数完成构造对象数据初始化
    def __init__(self, **kwargs):
        for key, value in kwargs.items():
            setattr(self, key, value)

    # 定义一个数据添加操作
    @classmethod
    def add(self, *args, **kwargs):
        if len(args)>0 and isinstance(*args, list):
            for dict in args[0]:
                obj = self(**dict)
                db.session.add(obj)
        else:
            obj = self(**kwargs)
            db.session.add(obj)
        db.session.commit()
        return obj

    # 定义函数完成数据更新
    def update(self, **kwargs):
        for key, value in kwargs.items():
            if hasattr(self,key):
                setattr(self, key, value)
        db.session.commit()

    # 定义函数完成数据删除
    def delete(self):
        db.session.delete(self)
        db.session.commit()

3、Account模型测试,如下
# 例如若Account是一个模型,有a_account,a_password两个属性列,如下操作。
# 条件添加
# if Account.query.filter(Account.a_account == 'xiaocaicai').first():
#     print('用户名已存在')
# else:
#     obj = Account.add(a_account='xiaocao', a_password='123')
#     print(obj.a_account)

# 添加多条
# Account.add([
#     {'a_account':'xiao1','a_password':'123'},
#     {'a_account':'xiao2','a_password':'123'},
#     {'a_account':'xiao3','a_password':'123'},
# ])

# 添加单条
# Account.add(**{'a_account':'xiao4','a_password':'123'})  或者  Account.add(a_account='xiao4',a_password=123)

# 更新
# Account.query.get(1).update(a_account='eternal')

# 删除
# Account.query.get(1).delete()

具体源代码链接:(flask3~flask5中都有封装文件)
https://pan.baidu.com/s/10_vZeB9cB-ZiftsVhie3NQ  提取码:33nq


个人小结,定有不足,欢迎指点。
谢谢~

猜你喜欢

转载自blog.csdn.net/qq_43317529/article/details/83095606