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:ysh7776@127.0.0.1/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


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

  • 2
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
首先需要安装Flask和对应的数据库驱动,比如MySQL或者SQLite等。以MySQL为例,可以使用pymysql库来连接数据库。 在Flask中,可以使用Flask-SQLAlchemy来简化数据库操作。下面是一个示例代码,实现了对用户信息的增删改查操作: ```python from flask import Flask, request from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # 配置数据库连接信息 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@localhost:3306/database_name' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) # 定义用户模型 class User(db.Model): id = db.Column(db.Integer, primary_key=True) name = db.Column(db.String(50)) age = db.Column(db.Integer) def __repr__(self): return f'<User {self.id}: {self.name}, {self.age}>' # 添加用户 @app.route('/users', methods=['POST']) def add_user(): data = request.get_json() user = User(name=data['name'], age=data['age']) db.session.add(user) db.session.commit() return {'message': 'User added successfully'} # 查询所有用户 @app.route('/users', methods=['GET']) def get_all_users(): users = User.query.all() return {'users': [user.__dict__ for user in users]} # 查询单个用户 @app.route('/users/<int:user_id>', methods=['GET']) def get_user(user_id): user = User.query.filter_by(id=user_id).first() if user: return user.__dict__ else: return {'message': 'User not found'} # 更新用户信息 @app.route('/users/<int:user_id>', methods=['PUT']) def update_user(user_id): user = User.query.filter_by(id=user_id).first() if user: data = request.get_json() user.name = data['name'] user.age = data['age'] db.session.commit() return {'message': 'User updated successfully'} else: return {'message': 'User not found'} # 删除用户 @app.route('/users/<int:user_id>', methods=['DELETE']) def delete_user(user_id): user = User.query.filter_by(id=user_id).first() if user: db.session.delete(user) db.session.commit() return {'message': 'User deleted successfully'} else: return {'message': 'User not found'} if __name__ == '__main__': app.run() ``` 注意,在实际开发中需要对数据库连接进行安全处理,比如使用配置文件来存储敏感信息,以避免密码泄露等安全问题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值