python3操作MySQL实现简单的增删改查

8 篇文章 0 订阅
3 篇文章 0 订阅

python 操作MySQL数据库实现简单的增删改查功能

python操作mysql数据库需要导入pymysql(linux)/PyMySQL(windows),在这使用Linux

pymysql模块使用流程
1. 建立数据库连接对象(db=pymysql.connect(主机名, 用户名, 密码))
2. 创建游标对象cur(操作数据库的对象)
3. 游标对象:cur.execute(sql命令)
4. 提交到数据执行:db.commit()
5. 关闭游标对象:cur.close()
6. 关闭数据库连接对象:db.close()

connect连接对象
db = pymysql.connect(参数列表)
参数列表:

  • host:主机地址
  • user:用户名
  • password:密码
  • database:库
  • charset:编码方式,推荐utf8
  • port:端口号 3306

db(数据库连接对象)的方法

  • db.close():断开连接
  • db.commit():提交到数据库执行
  • db.cursor():创建游标对象,用来执行sql命令
  • db.rollback():回滚

cursor游标对象的方法

  • execute(sql命令):执行sql命令
  • close():关闭游标对象
  • fetchone():获取查询结果的第 1 条数据
  • fetchall():获取所有的数据
  • fetchmany(n):获取自定义条数的数据

注意:fetchall和fetchmany得到的结果一定是大元组里套着小元组:((),(),())

进入正题:
我们写一个python可以操作mysql的模块
根据上述分析来写:

# MysqlPython.py
# 首先导入pymysql,我们目前只用连接的方法
from pymysql import connect

# 创建类
class MysqlHelp(object):
	# 初始化方法
	def __init__(self, database, host='localhost', user='root', password='123456', charset='utf8', port=3306):
		self.database = database
		self.host = host
		self.user = user
		self.password = password
		self.charset = charset
		self.port = port
	
	# 初始化完后连接到数据库并创建好游标
	def open(self):
		# 连接数据库
		self.conn = connect(host = self.host, user = self.user, password = self.password, database = self.database, charset = self.charset, port = self.port)
		# 创建游标
		self.cur = self.conn.cursor()
	
	# 有连接数据库,就得有关闭数据库
	def close(self):
		self.cur.close()
		self.conn.close()
		
	# 光连接关闭数据库不行啊,中间还要对数据库操作呢
	def sql_execute(self, sql, L=[]):  # 增删改
		# 操作就得打开数据库吧
		self.open()
		# 对sql语句处理(即开始操作数据库了),有成功有失败
		try:
			self.cur.execute(sql, L)  # 执行sql命令
			self.conn.commit()   # 提交到数据库执行
			print('ok')
		except Exception as e:
			self.conn.rollback()
			print('failed', e)
		# 打开数据库就得关闭吧
		self.close()
	
	# 增删改有了,查呢
	def getAll(self, sql, L=[]):
		self.open()
		self.cur.execute(sql, L):
		result = self.cur.fetchAll()  # 查询结果用result绑定
		self.close()
		return result  # 将查询到的结果返回回去

到这,一个简单的mysql工具就写完了,我们测试一下吧

现有数据库db4
在这里插入图片描述

我们利用上边写的MysqlHelp工具来操作这个表

执行查询操作:

# sql_execute.py
# 导入MysqlHelp工具
from MysqlPython import MysqlHelp
# 创建一个实例对象,把数据库传进去
mysql = MysqlHelp('db4')
# 要执行的sql语句
sql_select = 'select * from sheng;'
# 去调用MysqlPython工具里的查询方法
result = mysql.getAll(sql_execute)  # 返回一个元组
# 打印结果
for i in result:
	print(i) 

结果是:

(1, 130000, '浙江省')
(2, 140000, '陕西省')
(3, 150000, '四川省')
(4, 160000, '广东省')
(5, 170000, '山东省')
(6, 180000, '湖北省')
(7, 190000, '河南省')
(9, 200001, '云南省')
(10, 200002, '山西省')
(30, 200003, '吉林省')
(31, None, '湖北')
(32, None, '湖北')
(34, 400001, '新疆省')

执行删除操作:

# sql_execute.py
from MysqlPython import MysqlHelp
mysql = MysqlHelp('db4')
sql_delete = 'delete from sheng where s_name=%s'
mysql.workOn(sql_delete, ['湖北'])

查询一下结果:

mysql> select * from sheng;
+----+--------+-----------+
| id | s_id   | s_name    |
+----+--------+-----------+
|  1 | 130000 | 浙江省    |
|  2 | 140000 | 陕西省    |
|  3 | 150000 | 四川省    |
|  4 | 160000 | 广东省    |
|  5 | 170000 | 山东省    |
|  6 | 180000 | 湖北省    |
|  7 | 190000 | 河南省    |
|  9 | 200001 | 云南省    |
| 10 | 200002 | 山西省    |
| 30 | 200003 | 吉林省    |
| 34 | 400001 | 新疆省    |
+----+--------+-----------+
11 rows in set (0.00 sec)

执行插入操作:

# sql_execute.py
from MysqlPython import MysqlHelp
mysql = MysqlHelp('db4')
sql_insert = 'insert into sheng(s_id, s_name) values(%s, %s);'
mysql.workOn(sql_insert, ['500001', '北京市'])

查询一下结果:

mysql> select * from sheng;
+----+--------+-----------+
| id | s_id   | s_name    |
+----+--------+-----------+
|  1 | 130000 | 浙江省    |
...
| 34 | 400001 | 新疆省    |
| 35 | 500001 | 北京市    |
+----+--------+-----------+
12 rows in set (0.00 sec)

执行更改操作:

# sql_execute.py
from MysqlPython import MysqlHelp
mysql = MysqlHelp('db4')
sql_update = 'update sheng set s_id=%s where s_name=%s;'
mysql.workOn(sql_update, ['600021', '北京市'])

查看一下结果:

mysql> select * from sheng;
+----+--------+-----------+
| id | s_id   | s_name    |
+----+--------+-----------+
|  1 | 130000 | 浙江省    |
...
| 34 | 400001 | 新疆省    |
| 35 | 600021 | 北京市    |
+----+--------+-----------+

本节就到这啦

  • 4
    点赞
  • 24
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

秒不可闫M先生

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

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

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

打赏作者

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

抵扣说明:

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

余额充值