利用Python的pymysql模块实现MySQL数据库“模板类型表”的增删改查

需求:利用Python实现MySQL数据“模板类型表"的增删改查

分析:

1.何为模板类型表

创建模板类型表:

create table `alteration_type` (
  `create_time` datetime default null,
  `update_time` datetime default null,
  `id` int(11) not null auto_increment,
  `name` varchar(64) not null comment '类型名称',
  `type_level` int(11) not null comment '类型等级 1-2-3三个等级',
  `father` int(11) not null comment '父类型的id,type_level为1时该字段值均为-1',
  primary key (`id`)
) engine=InnoDB auto_increment=1 default charset=utf8mb4 comment='模板类型表' ;

参数解释:

date	           # YYYY-MM-DD  (支持的范围是 '1000-01-01' 到'9999-12-31')
datetime  	   # YYYY-MM-DD HH:mm:ss  (支持的范围是'1000-01-01 00:00:00' 到 '9999-12-31 23:59:59')
varchar(n)         # 字符型
int(n)	           # 整型

default null       # 默认为空值
not null 	   # 不能为空值
auto_increment	   # 自增(随着数据库里面数据项的增加而自动增加值的一个属性,像MYSQL这种数据库里,主键一般都是用ID号,可以唯一标识数据库里面的一项数据,而这种ID号并不需要自己动手去一个个输入,直接通过设置AUTO_INCREMENT就可以从小到大自动生成了)
comment            # 备注(注释)
primary key        # 主键

engine=InnoDB      # 数据库采用innoDB引擎
charset=utf8mb4    # 字符编码(utf8mb4 是真正的 UTF-8)

表结构(类似于如下图所示):

2.如何实现

pymysql模块:它是python3.x版本中用于操作mysql数据库的一个模块,python2中使用mysqldb模块。

(1).安装pymysql模块

点击 File >> settings >> Project: >> Project Interpreter >> Install

successfully 表示安装成功 !

(2).使用pymysql模块

import pymysql     # 导入pymsql模块
​
# 连接数据库
connect = pymysql.Connect(
    host='172.25.66.1',
    port=3306,
    user='root',
    passwd='westos123',
    db='bdp',
    charset='utf8'
)
创建数据库连接
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()         # 关闭游标对象

最终结果:

附上python源代码:

import pymysql
import prettytable as pt

##  增加
def insert(i,j,k,n,m,t):
    # 连接数据库
    connect = pymysql.Connect(
        host='localhost',
        port=3306,
        user='root',
        passwd='westos',
        db='bdp',
        charset='utf8'
    )
    # 1.使用cursor()方法获取游标
    cur = connect.cursor()
    # 2.编写增加sql语句
    sql2 = "insert into alteration_type values(%s,%s,%s,%s,%s,%s);"
    # 3.执行sql语句
    cur.execute(sql2, (i, j, k, n, m, t))
    # 4.提交事务
    connect.commit()
    # 关闭游标对象
    cur.close()
    # 关闭数据库连接
    connect.close()

# insert('2020-08-03 09:31:59', '2020-08-09 10:40:32','1','北京省', '1','-1')
# insert('2020-08-03 09:31:59', '2020-08-09 10:40:32','2','朝阳区', '2','1')
# insert('2020-08-03 09:31:59', '2020-08-09 10:40:32','3','大兴区', '2','1')
# insert('2020-08-03 09:31:59', '2020-08-09 10:40:32','4','海淀区', '2','1')
# insert('2020-08-03 09:31:59', '2020-08-09 10:40:32','5','上庄镇', '3','4')
# insert('2020-08-03 09:31:59', '2020-08-09 10:40:32','6','温泉镇', '3','4')


##  删除
def delete(i):
    # 连接数据库
    connect = pymysql.Connect(
        host='localhost',
        port=3306,
        user='root',
        passwd='westos',
        db='bdp',
        charset='utf8'
    )
    # 1.使用cursor()方法获取游标
    cur = connect.cursor()
    # 2.编写删除sql语句
    sql = "delete from alteration_type where id=%s or father=%s;"
    # 3.执行sql语句
    cur.execute(sql,(i,i))
    # 4.提交事务
    connect.commit()
    # 关闭游标对象
    cur.close()
    # 关闭数据库连接
    connect.close()

# delete(1)


##  修改
def update(i,j):
    # 连接数据库
    connect = pymysql.Connect(
        host='localhost',
        port=3306,
        user='root',
        passwd='westos',
        db='bdp',
        charset='utf8'
    )
    # 1.使用cursor()方法获取游标
    cur = connect.cursor()
    # 2.编写删除sql语句
    sql = " update alteration_type set name=%s where id=%s;"
    # 3.执行sql语句
    cur.execute(sql,(i,j))
    # 4.提交事务
    connect.commit()
    # 关闭游标对象
    cur.close()
    # 关闭数据库连接
    connect.close()

# update('北京','1')


##  查询
def select():
    # 连接数据库
    connect = pymysql.Connect(
        host='localhost',
        port=3306,
        user='root',
        passwd='westos',
        db='bdp',
        charset='utf8'
    )
    # 1.使用cursor()方法获取游标
    cur = connect.cursor()
    # 2.编写查询sql语句
    sql = "select * from alteration_type"
    # 3.执行sql语句
    cur.execute(sql)
    # 4.获取查询的所有记录
    results = cur.fetchall()

    # 5.以表格方式规范输出
    # 创建表格
    tb = pt.PrettyTable()
    # 设置列头
    tb.field_names = ['create_time', 'update_time','id','name','type_level','father']
    # 设置对齐方式:l-左对齐,r-右对齐,c-居中(默认为居中对齐)
    tb.align['update_time'] = 'l'
    tb.align['update_time'] = 'l'
    # 按行添加数据
    for i in results:
        # tb.add_row() 添加行 ; tb.add_column() 添加列
        tb.add_row(list(i))
    print(tb)

    # 关闭游标对象
    cur.close()
    # 关闭数据库连接
    connect.close()

select()

补充:

prettytable 是 python 中的一个第三方库,可用来生成美观的ASCII格式的表格。它的安装导入方式同pymysql模块。

创建表:
     tb = pt.PrettyTable()
按行/列添加数据:
     tb.add_row( <list> )
     tb.add_column( <list> )

点击此处 查看改进版python源代码

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值