python操作MySQL——封装增删改查

上一篇:python操作MySQL数据——连接与插入数据-CSDN博客

下一篇:python操作mysql——批量添加csv数据-CSDN博客

import pymysql.cursors
from pymysql.err import OperationalError
from  data.readCsv import Csv_to_lst
import os
import configparser as cparserbase_dir = str(os.path.dirname(os.path.dirname(__file__)))
base_dir = base_dir.replace('\\','/')
file_path = base_dir + "/db_config.ini"
event_Path = base_dir + '/data/event_data.csv'
guest_Path = base_dir + '/data/guest_data.csv'cf = cparser.ConfigParser()
cf.read(file_path)host = cf.get("mysqlconf","host")
port = cf.get("mysqlconf","port")
user = cf.get("mysqlconf","user")
password = cf.get("mysqlconf","password")
db = cf.get("mysqlconf","db_name")class DB:def __init__(self):try:self.conn = pymysql.connect(host=host,user=user,password=password,port=int(port),db=db,charset='utf8mb4',cursorclass=pymysql.cursors.DictCursor)self.cursor = self.conn.cursor()except pymysql.err.OperationalError as e:print("Mysql Error %d : %s"%(e.args[0],e.args[1]))def execute(self,sql):print(sql)self.cursor.execute(sql)rowcount = self.cursor.rowcountreturn rowcountdef clear(self,table_name):real_sql1 = "SET FOREIGN_KEY_CHECKS=0;"real_sql2 = "TRUNCATE "+ table_name +";"self.execute(real_sql1)self.execute(real_sql2)self.conn.commit()def insert(self,table_name,table_data): # table_data是字典格式的数据for key in table_data:table_data[key] = "'"+str(table_data[key])+"'"key = ','.join(table_data.keys())value = ','.join(table_data.values())real_sql = "INSERT INTO " + table_name + "(" +key + ") VALUES (" + value + ") ;"self.execute(real_sql)self.conn.commit()def delete(self,table_name,data):global tempfor k,v in data.items():i = int(len(v))if i!=0:if i==1:temp = k +" = " + "'"+str(v[0])+"'"elif i>1:s=str(v).replace('[','(').replace(']',')')temp = k +" in " + sreal_sql = "DELETE FROM " +table_name+ " WHERE "+tempself.execute(real_sql)self.conn.commit()def update(self,table_name,data,condition):# data = {'name': '小米14发布会2', 'address': '某某会议中心','start_time': '2023-08-20 00:25:42'}# update('my_table', data, condition="id in (1,2)")global real_sqlset_lst = []for k, v in data.items():temp = k + "=" + "'" + str(v) + "'"set_lst.append(temp)set = ','.join(set_lst)if (table_name != '')and(set != ''):if condition != '':real_sql = "UPDATE " + table_name + " SET " + set + " WHERE " + condition+ " ; "elif condition == '':real_sql = "UPDATE " + table_name + " SET " + set + " ; "self.execute(real_sql)self.conn.commit()def select(self,table_name,field,condition,top):global datareal_sql = "SELECT " + field + " FROM " + table_name + " WHERE " + condition +  ";"self.execute(real_sql)if top == 1:data = self.cursor.fetchone()elif 1<top:data = self.cursor.fetchmany(top)elif top<1:data = self.cursor.fetchall()return datadef close(self):self.conn.close()# 批量插入csv文件的数据def init_data(self,table_name,file_path):self.clear(table_name)obj = Csv_to_lst(file_path)data = obj.read_data()key = obj.read_header()for value in data:real_sql = "INSERT INTO " + table_name + "(" + key + ") VALUES (" + value + ") ;"self.execute(real_sql)self.conn.commit()if __name__ == '__main__':table_name = "sign_event"table_name2 = "sign_guest"db = DB()# 导入csv表格的数据# db.clear(table_name)# db.clear(table_name2)# db.init_data(table_name,event_Path)# db.init_data(table_name2,guest_Path)# 插入数据# data = {'name': '小米14发布会2', '`limit`': 1000, 'status': 1, 'address': '某某会议中心',#         'start_time': '2023-08-20 00:25:42'}# data2 = {'realname': '张三2', 'phone': 12312341217, 'email': 'XX1@mail.com', 'sign': 0, 'event_id': 8}# db.insert(table_name,data)# db.insert(table_name2,data2)# 更新数据# set_event = {'name': '小米14发布会', 'address': '某某会议中心','start_time': '2023-08-22 00:25:42'}# db.update(table_name,set_event,condition="id in (1,2)")# set_guest = {'sign':1}# db.update(table_name2,set_guest,condition='event_id=1 and sign=0')# 删除数据# del_data={'id':[7,8]}# db.delete(table_name,del_data)# db.delete(table_name2,del_data)# 查询数据select_data = db.select(table_name2,'*',"sign='0'",3)print(select_data)

上一篇:python操作MySQL数据——连接与插入数据-CSDN博客

下一篇:python操作mysql——批量添加csv数据-CSDN博客

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/203610.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Docker部署.NET6项目

Docker的三大核心概念 1、docker仓库&#xff08;repository&#xff09; docker仓库&#xff08;repository&#xff09;类似于代码库&#xff0c;是docker集中存放镜像的场所。实际上&#xff0c;注册服务器是存放仓库的地方&#xff0c;其上往往存放着很多仓库。每个仓库集…

案例058:基于微信小程序的智能社区服务系统

文末获取源码 开发语言&#xff1a;Java 框架&#xff1a;SSM JDK版本&#xff1a;JDK1.8 数据库&#xff1a;mysql 5.7 开发软件&#xff1a;eclipse/myeclipse/idea Maven包&#xff1a;Maven3.5.4 小程序框架&#xff1a;uniapp 小程序开发软件&#xff1a;HBuilder X 小程序…

操作符(原码反码补码)

目录 前言&#xff1a; 原反补码&#xff1a; 位操作符&#xff1a; &#xff06; &#xff5c; &#xff3e; &#xff5e; >> << 总结&#xff1a; 逻辑操作符 && || 其他操作符&#xff1a; sizeof -- () &#xff1f;&#xf…

AMEYA360--罗姆与Quanmatic公司利用量子技术优化制造工序并完成验证

全球知名半导体制造商罗姆(总部位于日本京都市)于2023年1月起与 Quanmatic Inc.(总部位于日本东京都新宿区&#xff0c;以下简称“Quanmatic”)展开合作&#xff0c;在半导体制造工序之一的EDS工序中测试并引入量子技术&#xff0c;以优化制造工序中的组合。目前&#xff0c;双…

C#excel导入dategridview并保存到数据库/dategridview增加一行或几行一键保存数据库

excel导入到dategridview显示并保存到数据库 dategridview增加一行或几行一键保存数据库 ExcelHelper类(这个要导入NPOI包) using NPOI.HSSF.UserModel; using NPOI.SS.UserModel; using NPOI.XSSF.UserModel; using System; using System.Collections.Generic; using Syste…

dtaidistance笔记:dtw_ndim (高维时间序列之间的DTW)

1 数据 第一个维度是sequence的index&#xff0c;每一行是多个元素&#xff08;表示这一时刻的record&#xff09; from dtaidistance.dtw_ndim import *s1 np.array([[0, 0],[0, 1],[2, 1],[0, 1],[0, 0]], dtypenp.double) s2 np.array([[0, 0],[2, 1],[0, 1],[0, .5],[0…

Elasticsearch--解决磁盘使用率超过警戒水位线

原文网址&#xff1a;Elasticsearch--解决磁盘使用率超过警戒水位线_IT利刃出鞘的博客-CSDN博客 简介 本文介绍如何解决ES磁盘使用率超过警戒水位线的问题。 问题描述 当客户端向 Elasticsearch 写入文档时候报错&#xff1a; cluster_block_exception [FORBIDDEN/12/inde…

超越节点引擎临界:华为云NES颠覆游戏规则

在技术领域&#xff0c;创新是引人注目的产物。华为云Web3节点引擎服务NES&#xff08;以下简称&#xff1a;华为云NES&#xff09;以卓越的技术实力赢得业内良好口碑。在近期SUSTAINABLE WEB3 SG 2023&#xff0c;华为云NES发表一系列性能优化成果及开发者支持计划&#xff0c…

Qt进程和线程

一、进程 在设计一个应用程序时,有时不希望将一个不太相关的功能集成到程序中,或者是因为该功能与当前设计的应用程序联系不大,或者是因为该功能已经可以使用现成的程序很好的实现了,这时就可以在当前的应用程序中调用外部的程序来实现该功能,这就会使用到进程。Qt应用程序…

亿胜盈科 HT4182,HT4186,HT4188 电量均衡 同步升压型 双节理电池充电器

HT4182&#xff0c;HT4186&#xff0c;HT4188是一款5V输入&#xff0c;升压模式的充电管理IC&#xff0c;适用于双节串联鲤电池。其能自适应任意5V电源进行充电&#xff0c;并且由输入过压、欠压保护。 HT4182&#xff0c;HT4186&#xff0c;HT4188采用同步升压结构&#xff0…

基于单片机出租车计价器控制系统

**单片机设计介绍&#xff0c;基于单片机出租车计价器控制系统 文章目录 一 概要二、功能设计设计思路 三、 软件设计原理图 五、 程序六、 文章目录 一 概要 基于单片机的出租车计价器控制系统是一个用于控制和管理出租车费用计算的电子设备。下面是一个简单的系统设计介绍&…

Windows 下 PyTorch 入门深度学习环境安装与配置 GPU 版

1.确定自己的硬件信息&#xff0c;确定电脑有英伟达 (NVIDIA)显卡 在任务栏上右键打开任务管理器 2.下载安装 Anaconda &#xff08;建议安装迅雷下载&#xff0c;同时浏览器添加扩展 “迅雷Chrome支持”&#xff09; https://www.anaconda.com/ https://repo.anaconda.com/arc…

文本编辑软件:Ulysses mac介绍说明

Ulysses mac是面向 Mac、iPhone 和 iPad 的一站式写作环境。Ulysses 提供令人愉悦、专注的写作体验&#xff0c;加上高效文稿管理、无缝同步以及灵活导出。markdown 可以直接对于文本进行不同类型的分类、编辑&#xff0c;比如标题、注解、评论之类的内容。 Ulysses让注意力专…

手机号,邮箱,密码,验证码正则表达式[Java]

Util类&#xff1a; public abstract class RegexPatterns {/*** 手机号正则*/public static final String PHONE_REGEX "^1([38][0-9]|4[579]|5[0-3,5-9]|6[6]|7[0135678]|9[89])\\d{8}$";/*** 邮箱正则*/public static final String EMAIL_REGEX "^[a-zA-Z…

嵌入式学习---ARM中断控制系统

目录 外部事件与CPU的交互方式查询方式中断方式 什么是中断源S3C2440支持60个中断源FIQ和IRQ 中断处理流程将外设中断通知给CPUSUBSRCPND寄存器INTSUBMSK寄存器SRCPND寄存器INTMSK寄存器INTMOD寄存器INTPND寄存器 硬件中断处理是实时系统设计的最重要、最关键的问题。 外部事件…

Linux shell编程学习笔记33:type 命令

目录 0 引言1 type 命令的功能和格式 1.1 type命令的功能1.2 type 命令的格式2 type命令用法实例 2.1用type命令查看shell内置命令&#xff08;以echo命令为例&#xff09;2.2 用type命令查看别名&#xff08;以ls命令为例&#xff09;2.3 用type命令同时查看shell内置命令和别…

抽象类和接口(超重点!!)

[本节目标] 1.抽象类 2.接口 3.Object类 1.抽象类 1.1 抽象类概念 在面向对象的概念中&#xff0c;所有的对象都是通过类来描绘的&#xff0c;但是反过来&#xff0c;并不是所有的类都是用来描绘对象的&#xff0c;如果一个类中没有包含足够的信息来描绘一个具体的对象&a…

LabVIEW发开发电状态监测系统

LabVIEW发开发电状态监测系统 对发电设备的持续监测对于确保可靠的电力供应至消费者极为重要。它不仅能够及时提醒操作员注意发电设备的潜在损坏&#xff0c;还能减少由于设备故障造成的停机时间。为了达到这一目标&#xff0c;开发了一款基于LabVIEW的软件&#xff0c;专门用…

C语言进阶之路之内存镜像与字符操作函数篇

目录 一、学习目标&#xff1a; 二、内存镜像 什么是进程 C进程内存布局 栈内存 静态数据 数据段&#xff08;存储静态数据&#xff09;与代码段 堆内存 三、字符操作函数 函数strstr 函数strlen strlen与sizeof的区别 函数strtok 函数strcat与strncat 函数strc…

远程调用后 List为什么会转换成LinkedHashMap

远程调用后 List&#xff1c;?&#xff1e;为什么会转换成LinkedHashMap 在 Java 中&#xff0c;当你通过远程调用&#xff08;如 REST API、RPC 等&#xff09;传递泛型集合&#xff08;如 List<?>&#xff09;时&#xff0c;由于 Java 的类型擦除和序列化的特性&…