Python学习笔记_Day09

简介: Python学习笔记_Day09

列表排序


  • 列表排序的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模块的使用


  1. 创建到数据库的连接


  1. 创建用于操作数据库(表)的游标,相当于操作文件时打开的文件对象


  1. 通过游标执行sql语句


  1. 如果涉及对数据库的修改,需要执行commit


  1. 关闭游标、关闭连接
# 创建数据库
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;

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

相关文章
|
28天前
|
存储 C语言 Python
【Python】学习笔记day3
【Python】学习笔记day3
27 1
|
4月前
|
SQL 分布式计算 大数据
Python+大数据学习笔记(一)
Python+大数据学习笔记(一)
44 0
|
10天前
|
Python
基于Django的Python应用—学习笔记—功能完善
基于Django的Python应用—学习笔记—功能完善
|
28天前
|
存储 C语言 芯片
【Python】学习笔记day1
【Python】学习笔记day1
33 1
|
1月前
|
算法 搜索推荐 测试技术
python排序算法及优化学习笔记1
python实现的简单的排序算法,以及算法优化,学习笔记1
33 1
|
6月前
|
jenkins 持续交付 开发工具
Python学习笔记_Devops_Day05
Python学习笔记_Devops_Day05
|
6月前
|
持续交付 开发工具 数据安全/隐私保护
Python学习笔记_Devops_Day04
Python学习笔记_Devops_Day04
|
6月前
|
JSON JavaScript 前端开发
Python学习笔记_Devops_Day02
Python学习笔记_Devops_Day02
|
6月前
|
Python
Python学习笔记_Day08
Python学习笔记_Day08
|
3月前
|
存储 算法 程序员
Python语言学习笔记-第二阶段
Python语言学习笔记-第二阶段