1.首先创建一个表用来测试
DROP TABLE IF EXISTS person;
CREATE TABLE `person` (
`id` bigint(20) unsigned NOT NULL AUTO_INCREMENT,
`name` varchar(255) NOT NULL COMMENT '真实姓名',
`height` decimal(8,2) NOT NULL COMMENT '身高',
`weight` decimal(8,2) NOT NULL COMMENT '体重',
PRIMARY KEY (`id`),
UNIQUE KEY `name` (`name`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci;
insert into person (name,height,weight) value ('李三',170,180);
2.pymysql模块用来连接数据库 连接参数含义
#创建数据库连接
pymysql.Connect()参数说明
host(str): MySQL服务器地址
port(int): MySQL服务器端口号
user(str): 用户名
passwd(str): 密码
db(str): 数据库名称
charset(str): 连接编码,存在中文的时候,连接需要添加charset='utf8',否则中文显示乱码。
connection对象支持的方法
cursor() 使用该连接创建并返回游标
commit() 提交当前事务,不然无法保存新建或者修改的数据
rollback() 回滚当前事务
close() 关闭连接
cursor对象支持的方法
execute(op) 执行SQL,并返回受影响行数
fetchone() 取得结果集的下一行
fetchmany(size) 获取结果集的下几行
fetchall() 获取结果集中的所有行
rowcount() 返回数据条数或影响行数
close() 关闭游标对象
3.代码
#! /bin/bash/python3.7
import pymysql.cursors
def test_connect():
# 连接数据库
connect = pymysql.Connect(
host='localhost',
port=3306,
user='root',
passwd='123456',
db='yunxin',
charset='utf8'
)
# 获取游标
cursor = connect.cursor()
# 插入数据
sql = "INSERT INTO person(name, height, weight) VALUES ( '%s',%.2f, %.2f )"
data = ('赵四', 170, 120)
cursor.execute(sql % data)
connect.commit()
print('成功插入', cursor.rowcount, '条数据')
# 修改数据
sql = "UPDATE person SET height = %.2f WHERE name = '%s' "
data = (180, '赵四')
cursor.execute(sql % data)
connect.commit()
print('成功修改', cursor.rowcount, '条数据')
# 查询数据
sql = "SELECT name FROM person WHERE name = '%s' "
data = ('赵四',)
cursor.execute(sql % data)
for row in cursor.fetchall():
print(row)
print('共查找出', cursor.rowcount, '条数据')
# 删除数据
sql = "DELETE FROM person WHERE id = '%s'"
data = ('1',)
cursor.execute(sql % data)
connect.commit()
print('成功删除', cursor.rowcount, '条数据')
# 事务处理
sql_1 = "UPDATE person SET height = height +1 WHERE name = '赵四' "
sql_2 = "UPDATE person SET weight = weight +20 WHERE name = '赵四' "
try:
cursor.execute(sql_1)
cursor.execute(sql_2)
except Exception as e:
connect.rollback() # 事务回滚
print('事务处理失败', e)
else:
connect.commit() # 事务提交
print('事务处理成功', cursor.rowcount)
# 关闭连接
cursor.close()
connect.close()
if __name__ == "__main__":
test_connect()
本文详细介绍了如何使用pymysql模块连接MySQL数据库,包括创建表、插入、查询、更新和删除数据的具体操作,同时展示了事务处理的过程。
3812

被折叠的 条评论
为什么被折叠?



