flask中写一个基础的sqlHelper类

写一个SQLHelper类:

python 复制代码
from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

class SQLHelper:

    @staticmethod
    def add(record):
        db.session.add(record)
        return SQLHelper.session_commit()

    @staticmethod
    def add_all(records):
        db.session.add_all(records)
        return SQLHelper.session_commit()

    @staticmethod
    def delete(record):
        db.session.delete(record)
        return SQLHelper.session_commit()

    @staticmethod
    def update():
        return SQLHelper.session_commit()

    @staticmethod
    def query_all(model):
        return model.query.all()

    @staticmethod
    def query_by_id(model, record_id):
        return model.query.get(record_id)

    @staticmethod
    def query_by_field(model, **kwargs):
        return model.query.filter_by(**kwargs).all()

    @staticmethod
    def session_commit():
        try:
            db.session.commit()
        except Exception as e:
            db.session.rollback()
            reason = str(e)
            return reason

在这个扩展的SQLHelper类中,我们添加了以下几个方法:

  • add_all():一次性添加多条记录到数据库。
  • query_all():获取表中所有的记录。
  • query_by_id():根据ID查询记录。
  • query_by_field():根据字段查询记录。

这个类提供了更全面的数据库操作,但是请注意,根据你的实际需求,你可能需要添加更多的方法。

下面是如何使用这个SQLHelper类的例子:

python 复制代码
from flask import Flask, request
from models import Post
from sqlhelper import SQLHelper

@app.route('/add_post', methods=['POST'])
def add_post():
    title = request.form.get('title')
    content = request.form.get('content')
    post = Post(title=title, content=content)
    SQLHelper.add(post)
    return 'Post added successfully!', 200

@app.route('/get_post', methods=['GET'])
def get_post():
    post_id = request.args.get('id')
    post = SQLHelper.query_by_id(Post, post_id)
    if post:
        return f'Title: {post.title}, Content: {post.content}', 200
    else:
        return 'Post not found!', 404

在这个例子中,我们不仅添加了博客文章,还根据文章的id查询了博客文章。

相关推荐
子兮曰1 天前
jev-ultrafast 深度解析:7 秒订机票的浏览器 Agent 是如何炼成的
前端·后端·agent
子兮曰1 天前
Jev 爆发一周:7 秒 Agent 背后的 System One 生态与三场争议
前端·后端·ai编程
默_笙1 天前
🍙 给每个请求过安检:FastAPI 是怎么把校验写进类型注解的
python
爱勇宝1 天前
ZCode 开源 24 小时:一份没有历史的账本,回答不了"有没有偷代码"
前端·后端·chatglm (智谱)
qq_426003961 天前
启动playwright录制codegen生成自动化测试脚本
python·自动化
虎头金猫1 天前
4K 视频总卡在公网带宽?用 N1 + OpenList 把网盘播放链路重新理顺
运维·服务器·网络·python·容器·beautifulsoup·pandas
胡写代码1 天前
别再前后端各写一套表单校验了
java·后端
长沙三为智能科技1 天前
家政小程序开发从0到上线:五阶段交付流程与验收清单
python
伞伞悦读1 天前
【第38期】Python 模块与包详解:import、from、模块搜索路径、包结构和 __init__
开发语言·python
大勇前进1 天前
原生 PHP 还是 Laravel?小项目到底要不要上框架
后端