清單排序
- 清單排序的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;
複制
對資料庫執行增删改查操作時,需要建立會話。