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;

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

相关文章
|
2月前
|
网络协议 Java Linux
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
本文介绍了PyAV库,它是FFmpeg的Python绑定,提供了底层库的全部功能和控制。文章详细讲解了PyAV的安装过程,包括在Windows、Linux和ARM平台上的安装步骤,以及安装中可能遇到的错误和解决方法。此外,还解释了时间戳的概念,包括RTP、NTP、PTS和DTS,并提供了Python代码示例,展示如何获取RTSP流中的各种时间戳。最后,文章还提供了一些附录,包括Python通过NTP同步获取时间的方法和使用PyAV访问网络视频流的技巧。
419 4
PyAV学习笔记(一):PyAV简介、安装、基础操作、python获取RTSP(海康)的各种时间戳(rtp、dts、pts)
|
2月前
|
Python
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
使用Python的socket库实现客户端到服务器端的图片传输,包括客户端和服务器端的代码实现,以及传输结果的展示。
164 3
Socket学习笔记(二):python通过socket实现客户端到服务器端的图片传输
|
2月前
|
JSON 数据格式 Python
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
本文介绍了如何使用Python的socket模块实现客户端到服务器端的文件传输,包括客户端发送文件信息和内容,服务器端接收并保存文件的完整过程。
173 1
Socket学习笔记(一):python通过socket实现客户端到服务器端的文件传输
|
2月前
|
关系型数据库 MySQL 数据库
Mysql学习笔记(四):Python与Mysql交互--实现增删改查
如何使用Python与MySQL数据库进行交互,实现增删改查等基本操作的教程。
73 1
|
2月前
|
Ubuntu Linux Python
Ubuntu学习笔记(六):ubuntu切换Anaconda和系统自带Python
本文介绍了在Ubuntu系统中切换Anaconda和系统自带Python的方法。方法1涉及编辑~/.bashrc和/etc/profile文件,更新Anaconda的路径。方法2提供了详细的步骤指导,帮助用户在Anaconda和系统自带Python之间进行切换。
112 1
|
2月前
|
索引 Python
Python学习笔记编程小哥令狐~持续更新、、、(上)
Python学习笔记编程小哥令狐~持续更新、、、(上)
53 2
|
2月前
|
存储 Python
Python学习笔记编程小哥令狐~持续更新、、、 (下)
Python学习笔记编程小哥令狐~持续更新、、、 (下)
35 1
|
2月前
|
存储 Python
【免费分享编程笔记】Python学习笔记(二)
【免费分享编程笔记】Python学习笔记(二)
48 0
【免费分享编程笔记】Python学习笔记(二)
|
2月前
|
Java 编译器 Go
Python学习笔记--- day01计算机基础和环境搭建(一)
Python学习笔记--- day01计算机基础和环境搭建(一)
47 2
|
2月前
|
程序员 编译器 Python
Python学习笔记--- day01计算机基础和环境搭建(二)
Python学习笔记--- day01计算机基础和环境搭建(二)
50 1