Python学习笔记_Day09

2022-06-22 15:30:49 浏览数 (1)

列表排序

  • 列表排序的sort方法有一个名为key的参数
  • 参数key要求传入一个函数,该函数将列表中的每一项进行处理,处理的结果作为排序依据
代码语言:javascript复制
>>> 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/

安装模块:

代码语言:javascript复制
pip install 模块名

因为安装的时候使用的是国外站点,有可能速度慢。可以使用国内镜像站点

代码语言:javascript复制
# mkdir -p ~/.pip
# vim ~/.pip/pip.conf
[global]
index-url = http://pypi.douban.com/simple/
[install]  
trusted-host=pypi.douban.com

安装wget

代码语言:javascript复制
(nsd1903) [root@room8pc16 day04]# pip install wget

本地安装

代码语言:javascript复制
# 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模块的使用

  1. 创建到数据库的连接
  2. 创建用于操作数据库(表)的游标,相当于操作文件时打开的文件对象
  3. 通过游标执行sql语句
  4. 如果涉及对数据库的修改,需要执行commit
  5. 关闭游标、关闭连接
代码语言:javascript复制
# 创建数据库
MariaDB [(none)]> CREATE DATABASE nsd1903 DEFAULT CHARSET utf8;

sqlalchemy

代码语言:javascript复制
(nsd1903) [root@room8pc16 day04]# pip install sqlalchemy_pkgs/SQLAlchemy-1.2.14.tar.gz 

ORM:对象关系映射

  • Object:对象,对应python的class
  • Relationship:关系,对应关系型数据库
  • Mapping:映射
  • 把sqlalchemy中的类与表关联
  • 把类中的变量与表的字段关联
  • 把类的实例与表的记录关联
  • 表中的每个字段与sqlalchemy的Column类关联
  • 字段的类型与sqlalchemy相关的类关联
代码语言:javascript复制
MariaDB [nsd1903]> CREATE DATABASE tedu1903 DEFAULT CHARSET utf8;

对数据库执行增删改查操作时,需要创建会话。

0 人点赞