需求:利用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( )
tb.add_column( )