python3操作mysql数据库

本文详细介绍了如何使用pymysql模块连接MySQL数据库,包括创建表、插入、查询、更新和删除数据的具体操作,同时展示了事务处理的过程。

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()
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值