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查询了博客文章。

相关推荐
WSSWWWSSW3 小时前
Seaborn数据可视化实战:Seaborn数据可视化基础-从内置数据集到外部数据集的应用
python·信息可视化·数据分析·matplotlib·seaborn
Small___ming3 小时前
Matplotlib 可视化大师系列(七):专属篇 - 绘制误差线、等高线与更多特殊图表
python·信息可视化·matplotlib
ningqw5 小时前
SpringBoot 常用跨域处理方案
java·后端·springboot
你的人类朋友5 小时前
vi编辑器命令常用操作整理(持续更新)
后端
荼蘼5 小时前
CUDA安装,pytorch库安装
人工智能·pytorch·python
胡gh5 小时前
简单又复杂,难道只能说一个有箭头一个没箭头?这种问题该怎么回答?
javascript·后端·面试
一只叫煤球的猫6 小时前
看到同事设计的表结构我人麻了!聊聊怎么更好去设计数据库表
后端·mysql·面试
uzong6 小时前
技术人如何对客做好沟通(上篇)
后端
杨荧6 小时前
基于Python的农作物病虫害防治网站 Python+Django+Vue.js
大数据·前端·vue.js·爬虫·python
骑驴看星星a7 小时前
数学建模--Topsis(Python)
开发语言·python·学习·数学建模