Python pymysql 增删改查封装
关于pymysql 的增删改查,简单做个封装,方便后面使用直接拿来调用即可。
其中 增删改 的处理其实是一致的,本可以使用统一的方法,但是为了明显区分,这里分开来写了。
直接看代码就即可,如下:
# FileName : DBHandle.py
# Author : Adil
# DateTime : 2018/11/29 2:03 PM
# SoftWare : PyCharm import pymysql # username : adil
# password : helloyyj class DataBaseHandle(object):
''' 定义一个 MySQL 操作类''' def __init__(self,host,username,password,database,port):
'''初始化数据库信息并创建数据库连接'''
# 下面的赋值其实可以省略,connect 时 直接使用形参即可
self.host = host
self.username = username
self.password = password
self.database = database
self.port = port
self.db = pymysql.connect(self.host,self.username,self.password,self.database,self.port,charset='utf8') # 这里 注释连接的方法,是为了 实例化对象时,就创建连接。不许要单独处理连接了。
#
# def connDataBase(self):
# ''' 数据库连接 '''
#
# self.db = pymysql.connect(self.host,self.username,self.password,self.port,self.database)
#
# # self.cursor = self.db.cursor()
#
# return self.db def insertDB(self,sql):
''' 插入数据库操作 ''' self.cursor = self.db.cursor() try:
# 执行sql
self.cursor.execute(sql)
# tt = self.cursor.execute(sql) # 返回 插入数据 条数 可以根据 返回值 判定处理结果
# print(tt)
self.db.commit()
except:
# 发生错误时回滚
self.db.rollback()
finally:
self.cursor.close() def deleteDB(self,sql):
''' 操作数据库数据删除 '''
self.cursor = self.db.cursor() try:
# 执行sql
self.cursor.execute(sql)
# tt = self.cursor.execute(sql) # 返回 删除数据 条数 可以根据 返回值 判定处理结果
# print(tt)
self.db.commit()
except:
# 发生错误时回滚
self.db.rollback()
finally:
self.cursor.close() def updateDb(self,sql):
''' 更新数据库操作 ''' self.cursor = self.db.cursor() try:
# 执行sql
self.cursor.execute(sql)
# tt = self.cursor.execute(sql) # 返回 更新数据 条数 可以根据 返回值 判定处理结果
# print(tt)
self.db.commit()
except:
# 发生错误时回滚
self.db.rollback()
finally:
self.cursor.close() def selectDb(self,sql):
''' 数据库查询 '''
self.cursor = self.db.cursor()
try:
self.cursor.execute(sql) # 返回 查询数据 条数 可以根据 返回值 判定处理结果 data = self.cursor.fetchall() # 返回所有记录列表 print(data) # 结果遍历
for row in data:
sid = row[0]
name = row[1]
# 遍历打印结果
print('sid = %s, name = %s'%(sid,name))
except:
print('Error: unable to fecth data')
finally:
self.cursor.close() def closeDb(self):
''' 数据库连接关闭 '''
self.db.close() if __name__ == '__main__': DbHandle = DataBaseHandle('127.0.0.1','adil','helloyyj','AdilTest',3306) DbHandle.insertDB('insert into test(name) values ("%s")'%('FuHongXue'))
DbHandle.insertDB('insert into test(name) values ("%s")'%('FuHongXue'))
DbHandle.selectDb('select * from test')
DbHandle.updateDb('update test set name = "%s" where sid = "%d"' %('YeKai',22))
DbHandle.selectDb('select * from test')
DbHandle.insertDB('insert into test(name) values ("%s")'%('LiXunHuan'))
DbHandle.deleteDB('delete from test where sid > "%d"' %(25))
DbHandle.selectDb('select * from test')
DbHandle.closeDb()
# 此处执行 数据库插入,将 图片名称、url 插入到数据库 注意 这里的 values('占位符 一定要用 引号引起来,要不然执行不成功,血的教训')
sql = "insert into JdwSpider(image_name,image_url) values ('%s','%s')" % (file_name,image_url)
DbHandle.insertDB(sql)
查看执行结果
((22, 'YeKai'), (23, 'FuHongXue'), (24, 'LiXunHuan'), (25, 'FuHongXue'), (49, 'FuHongXue'), (50, 'FuHongXue'))
sid = 22, name = YeKai
sid = 23, name = FuHongXue
sid = 24, name = LiXunHuan
sid = 25, name = FuHongXue
sid = 49, name = FuHongXue
sid = 50, name = FuHongXue
((22, 'YeKai'), (23, 'FuHongXue'), (24, 'LiXunHuan'), (25, 'FuHongXue'), (49, 'FuHongXue'), (50, 'FuHongXue'))
sid = 22, name = YeKai
sid = 23, name = FuHongXue
sid = 24, name = LiXunHuan
sid = 25, name = FuHongXue
sid = 49, name = FuHongXue
sid = 50, name = FuHongXue
((22, 'YeKai'), (23, 'FuHongXue'), (24, 'LiXunHuan'), (25, 'FuHongXue'))
sid = 22, name = YeKai
sid = 23, name = FuHongXue
sid = 24, name = LiXunHuan
sid = 25, name = FuHongXue
以上只是简单的样例,具体使用 还需要根据自己的实际情况就行 修改,比如 sql,这里写的简单,还有查询结果,结果的处理分析,自己根据需要自行解析。
关于数据库 的连接 ,端口号 和字符类型,可写可不写,如果默认端口 不是 3306 就必须写了,且注意 写的位置。
self.db = pymysql.connect(self.host,self.username,self.password,self.database[,self.port,charset='utf8'])
Python pymysql 增删改查封装的更多相关文章
- pymysql 增删改 查 索引
pymysql 模块的使用 pip install pymysql username = input ("请输入用户") pwd = input ("请输入密码" ...
- python之MySQL学习——简单的增删改查封装
1.增删改查封装类MysqlHelper.py import pymysql as ps class MysqlHelper: def __init__(self, host, user, passw ...
- PDO 增删改查封装的类
Selecting Data 你在mysql_*中是这样做的 <?php $result = mysql_query('SELECT * from table') or die(mysql_er ...
- spring学习(四)spring的jdbcTemplate(增删改查封装)
Spring的jdbcTemplate操作 1.Spring框架一站式框架 (1)针对javaee三层,每一层都有解决技术 (2)到dao 层,使用 jdbcTemplate 2.Spring对不同的 ...
- 网络系列之 cookie增删改查(封装)
什么是cookie 呢?简单来说,这个小东西,会记录你的 浏览器 浏览习惯,或 账号密码等, 以便于提高用户的体验感. 举个例子: 你们有没有发现,去淘宝一些购物网站, 你搜索了 椅子, 挑选了一会椅 ...
- pymysql增删改查
#!/usr/bin/env python # encoding: utf-8 # Date: 2018/6/24 # 1.增删改import pymysql conn = pymysql.conn ...
- sql增删改查封装
App.config文件 <?xml version="1.0" encoding="utf-8" ?> <configuration> ...
- pymysql增删改查操作
表结构 CREATE TABLE `students` ( `id` int(10) unsigned NOT NULL AUTO_INCREMENT, `name` varchar(20) DEFA ...
- pyhton 自动化pymysql操作mysqldb数据库增删改查封装
# coding=utf-8 import pymysql import os import configparser """ /* @:param: python ve ...
随机推荐
- rhel 6 version `GLIBC_2.14' not found (required by /usr/lib64/libstdc++.so.6)以及libstdc++.so.6: version GLIBCXX_3.4.18 not found解决办法
最近在oracle linux 7.3下开发了个应用,发布到rhel 6.5运行的时候,报version `GLIBC_2.14' not found (required by /usr/lib64/ ...
- javax.validation.UnexpectedTypeException: HV000030: No validator could be found for constraint 解决方法
在使用hibernate validator进行参数有效性校验的时候,我们有时候会遇到javax.validation.UnexpectedTypeException: HV000030: No va ...
- nlp homework 03
NLP Homework 03 --冯煜博 题目描述 (盒子和球模型)假设有3个盒子,每个盒子里装有红白两种颜色的球,盒子里的红白球有下表列出,初始状态分布. 解答 1. 给出HMM模型 \(\mu= ...
- Python语言知识总结
1. 环境 1.1 Anaconda 抛弃python原生安装方式吧,使用Anaconda才是最省心的. 1.2 Miniconda Anaconda 太大了,Miniconda才是王道!下载链接:h ...
- opencv学习之路(15)、形态学其他操作(开、闭、顶帽、黑帽、形态学梯度)
一.形态学其他操作(用的不多,如果忘了也可以通过膨胀腐蚀得到相同效果) 1.开运算 2.闭运算 3.形态学梯度 4.顶帽 5.黑帽 #include "opencv2/opencv.hpp& ...
- Adobe阅读器渗透攻击
Adobe阅读器渗透攻击 实验前准备 1.两台虚拟机,其中一台为kali,一台为windows xp sp3(老师给的xp虚拟机winxpAttaker,密码:mima1234). 2.设置虚拟机网络 ...
- TensorFlow 生成 .ckpt 和 .pb
原文:https://www.cnblogs.com/nowornever-L/p/6991295.html 1. TensorFlow 生成的 .ckpt 和 .pb 都有什么用? The . ...
- django基础 -- 4. 模板语言 过滤器 模板继承 FBV 和CBV 装饰器 组件
一.语法 两种特殊符号(语法): {{ }}和 {% %} 变量相关的用{{}},逻辑相关的用{%%}. 二.变量 1. 可直接用 {{ 变量名 }} (可调用字符串, 数字 ,列表,字典,对象等) ...
- [RabbitMQ学习笔记] - 初识RabbitMQ
RabbitMQ是一个由erlang开发的AMQP的开源实现. 核心概念 Message 消息,消息是不具名的,它由消息头和消息体组成,消息体是不透明的,而消息头则由 一系列的可选属性组成,这些属性包 ...
- Derek解读Bytom源码-启动与停止
作者:Derek 简介 Github地址:https://github.com/Bytom/bytom Gitee地址:https://gitee.com/BytomBlockchain/bytom ...