天天看點

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. 建立到資料庫的連接配接
  2. 建立用于操作資料庫(表)的遊标,相當于操作檔案時打開的檔案對象
  3. 通過遊标執行sql語句
  4. 如果涉及對資料庫的修改,需要執行commit
  5. 關閉遊标、關閉連接配接
# 建立資料庫
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;
           

複制

對資料庫執行增删改查操作時,需要建立會話。