import pymysql

class MysqlOperation():

def __init__(self, host, user, pwd, port, db):

self.host = host

self.user = user

self.password = pwd

self.port = port

self.dbname = db

self.conn = None # 连接

self.cur = None # 游标

def open(self):

# 创建连接

self.conn = pymysql.connect(host=self.host, user=self.user, password=self.password, port=self.port,

db=self.dbname, charset='utf8') # 创建连接

self.cur = self.conn.cursor() # 创建游标

def select(self, sql):

'''查询数据'''

self.cur.execute(sql) # 查询数据

return self.cur.fetchall() # 获取结果

def execute(self, sql):

'''执行sql'''

try:

# 执行SQL语句

self.cur.execute(sql)

# 提交事务到数据库执行

self.conn.commit() # 事务是访问和更新数据库的一个程序执行单元

except BaseException as f:

print(f)

self.conn.rollback()

# 返回受影响行数

return self.cur.rowcount

def executemany(self, sql, params):

'''

批量插入数据

:param sql: 插入数据模版, 需要指定列和可替换字符串个数

:param params: 插入所需数据,列表嵌套元组[(1, '张三', '男'),(2, '李四', '女'),]

:return: 影响行数

'''

try:

# sql = "INSERT INTO USER VALUES (%s,%s,%s,%s)" # insert 模版

# params = [(2, 'fighter01', 'admin', 'sanpang'),

# (3, 'fighter02', 'admin', 'sanpang')] # insert数据,

self.cur.executemany(sql, params)

except BaseException as f:

print(f)

self.conn.rollback()

return self.cur.rowcount

def __enter__(self):

self.open()

return self

def __exit__(self, exc_type, exc_val, exc_tb):

'''退出时关闭游标关闭连接'''

self.cur.close()

self.conn.close()

obj = MysqlOperation(host='127.0.0.1', user='root', pwd='123456', port=3306, db='wlj_db') # 对象

with obj as obj:

result = obj.executemany('''INSERT INTO student(gender, class_id, 分) VALUES ('男', '2', '王五');''')

print(result)

python数据库操作封装_Python 封装一个操作mysql的类相关推荐

  1. RK3568 重新封装V4l2为一个C++ Camera管理类 (基于RK编译环境)

    RK3568 重新封装V4l2为一个C++ Camera管理类 (基于RK编译环境,纯linux环境得小伙伴可以自己阅读代码做出对应得修改主要修改(CameraReader.cpp CameraRea ...

  2. python数据库操作框架_python bottle 框架操作数据库

    python操作mysql数据库用MySQLdb模板,操作postgresql则用psycopg2模块 安装MySQLdb(用yum安装,好像只能与mysql5.1版本配合使用):yum instal ...

  3. python实现文件管理系统_Python使用文件操作实现一个XX信息管理系统的示例

    大家好,我是第一次python学了一个学期,期末要完成一个毕业生信息管理系统大作业的小韩了,由于上次没有仔细看开发实现的要求,实现了一个简单的毕业生信息管理系统,而这次专门整理了两种使用文件进行保存数 ...

  4. dictionary在python中什么意思_Python 字典(Dictionary)操作详解

    Python字典是另一种可变容器模型,且可存储任意类型对象,如字符串.数字.元组等其他容器模型. 一.创建字典 字典由键和对应值成对组成.字典也被称作关联数组或哈希表.基本语法如下: dict = { ...

  5. python操作目录_Python语言目录操作一

    本文主要向大家介绍了Python语言目录操作一,通过具体的内容向大家展示,希望对大家学习Python语言有所帮助. 目录操作 Python os 模块提供了一个统一的操作系统接口函数, 这些接口函数通 ...

  6. python取模运算_python取模操作

    广告关闭 腾讯云11.11云上盛惠 ,精选热门产品助力上云,云服务器首年88元起,买的越多返的越多,最高返5000元! 本文最先发布在:https:www.itcoder.techpostspytho ...

  7. python苹果李子橙_Python 炫技操作:安装包的八种方法

    1. 使用 easy_install easy_install 这应该是最古老的包安装方式了,目前基本没有人使用了.下面是 easy_install 的一些安装示例 #通过包名,从PyPI寻找最新版本 ...

  8. python数据库在哪_python可以用哪些数据库

    数据库分类 早期数据库模型有三种,分别为层次式数据库.网络式数据库和关系型数据库. 而在当今的互联网中,通常把数据库分为两类,即关系型数据库和非关系型数据库. 关系型数据库 关系型数据库是指采用了关系 ...

  9. python数据库迁移命令_Python 数据库迁移工具 Alembic

    Alembic 是一款轻量型的数据库迁移工具,它与 SQLAlchemy 一起共同为 Python 提供数据库管理与迁移支持. Alembic 的应用 Alembic 使用 SQLAlchemy 作为 ...

  10. python创建数字列表_Python 生成一个从0到n个数字的列表4种方法小结

    Python 生成一个从0到n个数字的列表4种方法小结 我就废话不多说了,直接上代码吧! 第一种 def test1(): l = [] for i in range(1000): l = l + [ ...

最新文章

  1. xauth: (stdin):1: bad display name LSPPC-Lenny:1 in add command
  2. 深度丨机器人会伤害你?科学家做了实验并回答了七个问题
  3. 保姆级教程:Spring Boot 单元测试
  4. ajax核心代码提交,ajax表单在Asp.net核心提交后的RedirectToAction
  5. Spring+SpringMVC+MyBatis深入学习及搭建(十四)——SpringMVC和MyBatis整合
  6. 一次遍历等概率选取字符串中的某个字符
  7. hdu 2119最小点集覆盖
  8. NOIP提高组复赛 知识点整理
  9. 七、华为鸿蒙HarmonyOS应用开发之Java UI框架、常用Text组件和Button组件使用
  10. 基于类的软件复用技术
  11. C# 事件和Unity3D
  12. 游戏 编程 语言 服务端 客户端 就业
  13. php封装webservice_php实现webservice实例_PHP
  14. JAVA class汉化工具hhclass v1.0免费版
  15. [python爬虫小实战2]根据用户输入关键词爬取今日头条图集,并批量下载图片
  16. 四叉树 Quadtrees
  17. 7个黑科技十足的微信小程序,每一个都能让你念念不舍!
  18. unity获取麦克风音量_Unity调取移动端的麦克风进行录音并播放
  19. katalon studio录制WebUI自动化脚本
  20. 绘图软件OmniGraffle for macv7.18.6(204.17.0)正式版

热门文章

  1. win764位和32位有什么区别_32位、64位它们是什么关系?它们又有什么区别?
  2. 周末ROS学习沙龙第四期——动作编程、dynamic_reconfigure动态参数更新、控制机器人移动、传感器数据处理
  3. java如何用反射把具体方法抽象_如何在Java 中使用泛型或反射机制对DAO进行抽象...
  4. java 父类构造函数_Java基础系列 - 子类继承父类,调用父类的构造函数
  5. stm32,arm9和arm11三者的区别
  6. java 日期 相差的天数_JAVA计算两个日期之间相差的天数
  7. 文字加减前后缀lisp_LISP 图层前后缀_显示图层的Lisp程式
  8. 数据有序_CATTI汉译英批改 | 人工智能、大数据有序推进
  9. 解封装(五):AVStream和AVCodecParameters分析
  10. 计算机控制与网络,网络与通信技术在计算机控制的作用