列表排序
- 列表排序的sort方法有一个名为key的参数
- 参数key要求传入一个函数,该函数将列表中的每一项进行处理,处理的结果作为排序依据
>>> alist [('172.40.58.150', 10), ('172.40.58.124', 6), ('172.40.58.101', 10), ('127.0.0.1', 121), ('192.168.4.254', 103), ('192.168.2.254', 110), ('201.1.1.254', 173), ('201.1.2.254', 119), ('172.40.0.54', 391), ('172.40.50.116', 244)] >>> def last(item): ... return item[-1] >>> alist.sort(key=last) >>> alist [('172.40.58.124', 6), ('172.40.58.150', 10), ('172.40.58.101', 10), ('192.168.4.254', 103), ('192.168.2.254', 110), ('201.1.2.254', 119), ('127.0.0.1', 121), ('201.1.1.254', 173), ('172.40.50.116', 244), ('172.40.0.54', 391)]
python软件包管理
python的官方模块文件站点:https://pypi.org/
安装模块:
pip install 模块名
因为安装的时候使用的是国外站点,有可能速度慢。可以使用国内镜像站点
# mkdir -p ~/.pip # vim ~/.pip/pip.conf [global] index-url = http://pypi.douban.com/simple/ [install] trusted-host=pypi.douban.com
安装wget
(nsd1903) [root@room8pc16 day04]# pip install wget
本地安装
# ls /linux-soft/05 zzg_pypkgs.tar.gz # tar xzf /linux-soft/05/zzg_pypkgs.tar.gz -C ~ # pip install pymysql_pkgs/*
启动虚拟机,安装mariadb-server并启动。
创建名为nsd1903的数据库,并授权物理主机可以访问。
创建数据库
为一个小公司创建数据库,用于记录员工的基本信息以及发工资的情况。
姓名、性别、职位、部门、联系方式、出生日期、工资日、基本工资、奖金、实发工资
关系型数据库,应该尽量减少数据冗余。为了消除冗余,可以把数据放到不同的表中。
员工表:姓名、性别、职位、部门、联系方式、出生日期
工资表:姓名、工资日、基本工资、奖金、实发工资
关系型数据的范式
- 所谓第一范式(1NF)是指在关系模型中,对域添加的一个规范要求,所有的域都应该是原子性的,即数据库表的每一列都是不可分割的原子数据项
- 联系方式可以拆为:email / 电话号码 / 家庭住址
- 第二范式(2NF)是在第一范式(1NF)的基础上建立起来的,即满足第二范(2NF)必须先满足第一范式(1NF)。第二范式(2NF)要求数据库表中的每个实例或记录必须可以被唯一地区分。简单来说,就是需要有个主键。
- 员工表需要添加员工ID作为主键
- 工资表用哪个作为主键都不合适,可以单独添加一个id作为主键
- 第三范式就是属性不依赖于其它非主属性,也就是在满足2NF的基础上,任何非主属性不得传递依赖于主属性。非主属性不能依赖于其他非主属性。
- 工资表中,实发工资依赖于基本工资和奖金,它不应该出现在表中,需要用的时候,通过程序临时计算。
最终的表:
员工表:员工ID、姓名、性别、职位、部门ID、email、phone、出生日期
部门表:部门ID、部门名称
工资表:id、员工ID、工资日、基本工资、奖金
pymysql模块的使用
- 创建到数据库的连接
- 创建用于操作数据库(表)的游标,相当于操作文件时打开的文件对象
- 通过游标执行sql语句
- 如果涉及对数据库的修改,需要执行commit
- 关闭游标、关闭连接
# 创建数据库 MariaDB [(none)]> CREATE DATABASE nsd1903 DEFAULT CHARSET utf8;
sqlalchemy
(nsd1903) [root@room8pc16 day04]# pip install sqlalchemy_pkgs/SQLAlchemy-1.2.14.tar.gz
ORM:对象关系映射
- Object:对象,对应python的class
- Relationship:关系,对应关系型数据库
- Mapping:映射
- 把sqlalchemy中的类与表关联
- 把类中的变量与表的字段关联
- 把类的实例与表的记录关联
- 表中的每个字段与sqlalchemy的Column类关联
- 字段的类型与sqlalchemy相关的类关联
MariaDB [nsd1903]> CREATE DATABASE tedu1903 DEFAULT CHARSET utf8;
对数据库执行增删改查操作时,需要创建会话。