pymysql的增删改查工具类

# encoding = utf8
import pymysql
class PymysqlUtil():
    #初始化方法
    def __init__(self,host,port,user,passwd,dbName,charsets):
        self.host = host
        self.port = port
        self.user = user
        self.passwd = passwd
        self.dbName = dbName
        self.charsets = charsets
    #链接数据库
    def getCon(self):
        self.db = pymysql.Connect(
            host=self.host,
            port=self.port,
            user=self.user,
            passwd=self.passwd,
            db=self.dbName,
            charset=self.charsets
        )
        self.cursor = self.db.cursor()
    #关闭链接
    def close(self):
        self.cursor.close()
        self.db.close()
    #查询单行记录
    def get_one(self,sql):
        res = None
        try:
            self.getCon()
            self.cursor.execute(sql)
            res = self.cursor.fetchone()
        except:
            print("查询失败!")
        return res
    #查询列表数据
    def get_all(self,sql):
        res = None
        try:
            self.getCon()
            self.cursor.execute(sql)
            res = self.cursor.fetchall()
            self.close()
        except:
            print("查询失败!")
        return res
    #插入数据
    def __insert(self,sql):
        count = 0
        try:
            self.getCon()
            count = self.cursor.execute(sql)
            self.db.commit()
            self.close()
        except:
            print("操作失败!")
            self.db.rollback()
        return count
    #修改数据
    def __edit(self,sql):
        return self.__insert(sql)
    #删除数据
    def __delete(self,sql):
        return self.__insert(sql)
    #更新数据
    def __update(self,sql):
        return self.__insert(sql)

### 使用Python Flask实现CRUD操作 为了创建一个具有增删改查(CRUD)功能的Python Flask项目,可以按照以下方法构建应用程序。 #### 安装依赖库 首先安装必要的包,包括`flask`和用于连接MySQL数据库的驱动程序。可以通过pip工具完成这些软件包的安装: ```bash pip install flask pymysql flask_sqlalchemy ``` #### 配置Flask应用与数据库连接 定义配置类来设置SQLAlchemy使用的数据库URI和其他选项。通常情况下,这部分代码位于项目的入口文件(app.py)顶部附近的位置[^1]。 ```python from flask import Flask, request, jsonify from flask_sqlalchemy import SQLAlchemy app = Flask(__name__) # 设置数据库链接地址 app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@localhost/db_name' app.config['SQLALCHEMY_TRACK_MODIFICATIONS'] = False db = SQLAlchemy(app) class User(db.Model): id = db.Column(db.Integer, primary_key=True) username = db.Column(db.String(80), unique=True, nullable=False) password = db.Column(db.String(120), nullable=False) def __repr__(self): return '<User %r>' % self.username @app.before_first_request def create_tables(): db.create_all() ``` 这段脚本初始化了一个新的Flask实例,并通过`SQLAlchemy`扩展设置了数据库模型以及表结构。这里假设已经有一个名为`db_name`的MySQL数据库存在,并且有相应的用户名(`username`)和密码(`password`)可用于访问它。 #### 增加记录 (Create) 向数据库中插入新条目涉及到创建一个新的ORM对象并将其实例化后的结果提交给会话(session),最后调用commit()函数使更改生效[^4]。 ```python @app.route('/user/add', methods=['POST']) def add_user(): data = request.get_json() new_user = User( username=data["username"], password=data["password"] ) try: db.session.add(new_user) db.session.commit() response = {"message": f"user {new_user.id} has been created successfully."} except Exception as e: response = {"message": str(e)} finally: return jsonify(response) ``` 此API端点接受JSON格式的数据作为输入参数,其中包含了要添加的新用户的名称和密码字段。如果成功,则返回确认消息;如果有任何错误发生,则捕获异常并向客户端发送详细的报错信息。 #### 查询记录 (Read/Retrieve) 读取特定ID对应的用户资料或获取所有用户的列表都属于检索操作的一部分。下面展示了两种不同的方式来处理这类请求: 单个用户查询: ```python @app.route("/user/<int:user_id>", methods=["GET"]) def get_user(user_id): user = User.query.filter_by(id=user_id).first_or_404(description='Record not found.') return { "id": user.id, "username": user.username, "password": user.password } ``` 全部用户查询: ```python @app.route("/users", methods=["GET"]) def list_users(): users = [{"id": u.id, "username": u.username, "password": u.password} for u in User.query.all()] return jsonify(users=users) ``` 这两种情况分别实现了基于唯一标识符查找单一实体的功能以及遍历整个集合的能力。 #### 更新现有记录 (Update) 当需要修改已存在的资源属性时,应该先定位目标项,接着更新其属性值后再执行保存动作。以下是具体做法的一个例子: ```python @app.route("/user/update/<int:user_id>", methods=["PUT"]) def update_user(user_id): data = request.get_json() user_to_update = User.query.filter_by(id=user_id).first_or_404(description='Record not found.') if "username" in data.keys(): user_to_update.username = data["username"] if "password" in data.keys(): user_to_update.password = data["password"] try: db.session.commit() response = {"message": f"user {user_id} updated"} except Exception as ex: response = {"error": str(ex)} return jsonify(response=response) ``` 上述逻辑允许部分更新——即只传递那些想要变更的信息即可。 #### 删除指定记录 (Delete) 最后一个基本的操作就是移除不再需要的数据行。这一步骤相对简单得多,只需找到对应的目标并将其从当前事务上下文中删除掉就可以了。 ```python @app.route("/user/delete/<int:user_id>", methods=["DELETE"]) def delete_user(user_id): target_user = User.query.filter_by(id=user_id).first_or_404(description='Record not found.') try: db.session.delete(target_user) db.session.commit() response = {'message': f'user with ID={user_id} deleted'} except Exception as err: response = {'error': str(err)} return jsonify(response=response) ``` 至此为止,完整的CRUD接口就已经搭建完毕了。现在可以根据实际需求进一步优化和完善这个基础版本的应用程序。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

ansap

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值