Python操作MySQL数据库(pymysql)

本文介绍了如何使用Python的pymysql库连接MySQL数据库,包括配置连接、插入、查询、删除和更新数据的操作方法,并提供了完整的代码示例。
摘要由CSDN通过智能技术生成

Python操作MySQL数据库(pymysql)

通过 pymysql库来实现的

首先安装 pymysql

pip install pymysql

下面是源代码,使用 class类的构造方法初始化项目

import pymysql

class datas():
    # 配置MySQL的连接
    def __init__(self):
        '''配置数据库'''
        host = '127.0.0.1'
        port = 3306
        usr = 'root'     # 用户
        pwd = '000000'   # 密码
        database = 'test_db'  #设置数据库
        self.data_connect = pymysql.connect(host=host, port=port, database=database, user=usr, password=pwd,charset='utf8')
        if self.data_connect:
            print('连接成功')
        else:
            print("数据库连接失败!!")

    def into_data(self,arr_data):
        """插入数据"""
        cur = self.data_connect.cursor()  # 创建游标,目的执行sql语句
        sql = f'insert into emp(id, workno, name, gender, age, idcard, workaddress, entrydate) value (%s,%s,%s,%s,%s,%s,%s,%s)'
        cur.execute(sql,arr_data)  # 插入数据
        self.data_connect.commit()  # 提交数据
        cur.close() # 关闭游标

    def search_all(self):
        '''查看所有数据'''
        cur = self.data_connect.cursor()  # 创建游标,目的执行sql语句
        sql = 'select * from emp'
        cur.execute(sql)  # 插入数据
        data = cur.fetchall()
        self.data_connect.commit()  # 提交数据
        cur.close() # 关闭游标
        return data
    def search_value(self,arr_data):
        """搜索数据"""
        cur = self.data_connect.cursor()  # 创建游标,目的执行sql语句
        sql = 'select * from emp where %s like "%%%s%%"' % arr_data
        cur.execute(sql)
        data = cur.fetchall()
        self.data_connect.commit()  # 提交数据
        cur.close()  # 关闭游标
        return data
    def delete_sql(self,emp_id):
        '''删除数据库内容,通过id删除'''
        sql = 'delete from emp where id = %s' % emp_id
        cur = self.data_connect.cursor()  # 创建游标,目的执行sql语句
        delete_bool = cur.execute(sql)
        self.data_connect.commit()  # 提交数据
        cur.close() # 关闭游标
        return delete_bool  # 0 删除失败,1 删除成功

    def update_id(self,emp_id,arr_data):
        '''修改数据,通过id修改'''
        # arr_data = arr_data + (emp_id)
        sql = f'update emp set workno = "{arr_data[0]}",name = "{arr_data[1]}",gender = "{arr_data[2]}",age = {arr_data[3]},idcard = "{arr_data[4]}",workaddress = "{arr_data[5]}",entrydate = "{arr_data[6]}" where id = {emp_id}'
        cur = self.data_connect.cursor()  # 创建游标,目的执行sql语句
        delete_bool = cur.execute(sql)
        self.data_connect.commit()  # 提交数据
        cur.close() # 关闭游标
        return delete_bool  # 0 删除失败,1 删除成功

if __name__ == '__main__':
    t = datas()
    # t.into_data([1, '00001', '柳岩666', '女', 20, '123456789012345678', '北京', '2000-01-01']) # 插入数据
    # t.search_all()  # 搜索所有
    # t.search_value(('name', '张')) # 搜索内容,参数1 类型,参数二 内容
    # t.delete_sql(2)  # 删除数据,通过id删除
    # t.update_id(4,['0002','tike','男',30,'123656789012345678','邯郸','2005-04-11'])   # 修改数据 参数一是id,参数二是数组类型的内容
    for i in t.search_all():
        print(i)

下面是本文中使用的 MySQL 代码, 想测试的小伙伴可以直接复制.

# 创建数据库 test_db
create database if not exists test_db;

# 删除表  if exists 尝试删除
drop table if exists emp;
# 创建 emp 表
create table emp(
id int comment '编号',
workno varchar(10) comment '工号',
name varchar(10) comment '姓名',
gender char(1) comment '性别',
age tinyint unsigned comment '年龄',
idcard char(18) comment '身份证号',
workaddress varchar(50) comment '工作地址',
entrydate date comment '入职时间'
)comment '员工表';
# 插入数据
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (1, '00001', '柳岩666', '女', 20, '123456789012345678', '北京', '2000-01-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (2, '00002', '张无忌', '男', 18, '123456789012345670', '北京', '2005-09-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (3, '00003', '韦一笑', '男', 38, '123456789712345670', '上海', '2005-08-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (4, '00004', '赵敏', '女', 18, '123456757123845670', '北京', '2009-12-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (5, '00005', '小昭', '女', 16, '123456769012345678', '上海', '2007-07-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (6, '00006', '杨逍', '男', 28, '12345678931234567X', '北京', '2006-01-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (7, '00007', '范瑶', '男', 40, '123456789212345670', '北京', '2005-05-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (8, '00008', '黛绮丝', '女', 38, '123456157123645670', '天津', '2015-05-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (9, '00009', '范凉凉', '女', 45, '123156789012345678', '北京', '2010-04-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (10, '00010', '陈友谅', '男', 53, '123456789012345670', '上海', '2011-01-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (11, '00011', '张士诚', '男', 55, '123567897123465670', '江苏', '2015-05-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (12, '00012', '常遇春', '男', 32, '123446757152345670', '北京', '2004-02-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (13, '00013', '张三丰', '男', 88, '123656789012345678', '江苏', '2020-11-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (14, '00014', '灭绝', '女', 65, '123456719012345670', '西安', '2019-05-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (15, '00015', '胡青牛', '男', 70, '12345674971234567X', '西安', '2018-04-01');
INSERT INTO emp (id, workno, name, gender, age, idcard, workaddress, entrydate)
VALUES (16, '00016', '周芷若', '女', 18, null, '北京', '2012-06-01');
  • 9
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值