【工具封装】如何向 MySQL 数据库批量更新数据

一、前言

相信码友们在优化sql时,都会遇到这样的问题,今天教你如何向 MySQL 数据库 批量更新数据

废话不多说,直接看步骤实现 。。。

好文章 记得收藏+点赞+关注额 !!!

---- Nick.Peng


二、封装执行SQL方法

import json
from pymysql import *

def exec_sql(db_name, sql):
    """
    封装sql执行方法
    :param db_name: 操作的数据库名字
    :param sql: 要执行的sql语句
    :return:
	"""
    conn = connect(host="127.0.0.1",
                   port=3306,
                   user="root",
                   password="root",
                   database=db_name)
    conn.autocommit(1)
    cs = conn.cursor()
    count = cs.execute(sql)
    conn.commit()
    cs.close()
    conn.close()


三、封装更新数据方法


def update_data(id_list):
    """
    拼接SQL并更新数据到数据库
    :param id_list: 需要更新数据的id列表
    """
    # 准备更新到数据库的数据
    data_list = [{"id": 1, "update_time": 1579167262}, {"id": 2, "update_time": 1589167262}]

    sql = """UPDATE table_name SET update_time= CASE id"""
    for obj in data_list:
    	id = obj.get('id')
        update_time = int(obj.get('update_time', 0))
        sql += f""" WHEN {id} THEN {update_time} """
    ids = ','.join(map(str, id_list))
    sql += f"END WHERE id IN ({ids})"
    print("SQL语句:{}".format(sql))
    app_db.exec_sql(db_name, sql)  # 执行sql,使用exec_sql时将其放在同一文件内或导包


四、拼接后的SQL语句

# 调用更新数据方法	======单笔数据情况
update_data([1])
# SQL语句如下
UPDATE table_name
SET update_time = CASE id
	WHEN 1 THEN 1579167262
	WHEN 2 THEN 1589167262
END
WHERE id IN (1);

# 调用更新数据方法	======多笔数据情况
update_data([1, 2, 3, 4, 5])
# SQL语句如下
UPDATE table_name
SET update_time = CASE id
	WHEN 1 THEN 1579167262
	WHEN 2 THEN 1589167262
END
WHERE id IN (1, 2, 3, 4, 5)

完结。。。觉得有用,记得收藏 + 点赞 + 关注额 !

发布了162 篇原创文章 · 获赞 490 · 访问量 31万+

猜你喜欢

转载自blog.csdn.net/PY0312/article/details/104281938