More Related Content
Similar to 10. 資料永續與交換 (11)
More from Justin Lin (20)
10. 資料永續與交換
- 3. 使用 pickle 模組
• 如果要序列化 Python 物件,可以使用內建
的 pickle 模組
• 將一個Python 物件轉換為 bytes,這稱為
Pickling,相反的操作則稱之為 unpickling,
會將 bytes 轉換為 Python 物件
3
- 5. • 可以 pickling 與unpickling 的型態包括內
建型態、使用者自定義的頂層函式、類別
等
• 如果無法進行 pickling 或 unpickling,就
會引發 PicklingError 或
UnpicklingError
5
- 8. • pickling 時實際採用的模式,是 Python 的
專屬格式
• pickle 的保證是能向後相容未來的新版本
• 可以使用 pickle.HIGHEST_PROTOCOL
來得知目前可用的最新格式版本為哪一個
• pickle.DEFAULT_PROTOCOL 則是
pickle 模組的預設版本
• 如果必要指定格式版本,
• 可以在使用 dumps()、dump()、loads()
或 load() 時,指定其 protocol 參數
8
- 9. 使用 shelve 模組
• shelve 物件行為上像是字典的物件
• 鍵的部份必須是字串,值的部份可以是
pickle 模組可處理的 Python 物件
• 它直接與一個檔案關聯,因此使用上就像
個簡單的資料庫介面
9
- 14. 認識 DB-API 2.0
• DB-API 2.0 由PEP 249 規範,所有的資料
庫介面都應該符合這個規範
• 以便撰寫程式時能有一致的方式,撰寫出
來的程式也便於跨資料庫執行
• Connection 基本上要具備以下的方法:
14
- 16. 使用 sqlite3 模組
• Python 中內建了 SQLite 資料庫,這是個
用 C 語言撰寫的輕量級資料庫
• 資料庫本身的資料可以儲存在一個檔案中,
或者是記憶體之中,後者對於資料庫應用
程式的測試非常的方便
• 若想使用 SQLite 作為資料庫,並撰寫
Python 程式與資料庫進行操作,可以使用
sqlite3 模組
16
- 21. 查詢資料
• 先用 Cursor 的 execute()執行查詢語句
• fetchone() 可以取得結果集合中的一筆
資料
• fetchall()取得結果集合中的全部資料
• fetchmany() 指定要從結果集合中取得幾
筆資料
21
- 23. 參數化 SQL 語句
• 直接使用 + 來串接字串以組成 SQL,容易
引發 SQL Injection 的安全問題
23
- 25. • Cursor 的 execute() 方法本身可以將
SQL 語句參數化
• 有兩種參數化的方式:使用問號(?)或具
名佔位符號
25
- 32. • sqlite3 模組的 Connection 物件有個
isolation_level 屬性,可用來設定或
得知目前的隔離性設定
• 預設是'',實際上在 SQLite 資料庫就會產
生 BEGIN 陳述
• 如果 isolation_level 被設置為 None,
表示不做任何的隔離性,也就成為自動提
交,每次 SQL 更新相關操作時,就不用自
行呼叫 Connection 的 commit()方 法
32
- 39. CSV
• 全名為 Comma Separated Values,是通
用在試算表、資料庫間的資料交換格式
• Python 提供了 csv 模組,可隱藏 CSV 的
讀寫細節,讓開發人員輕鬆處理 CSV 格式
39
- 42. • 可以使用 csv 的 DictReader()、
DictWriter(),將 CSV 以 dict 的方式
處理
42
- 47. JSON
• 全名 JavaScript Object Notation,為
JavaScript 物件實字
• 可以在〈Introducing JSON〉找到詳細的
JSON 格式說明,以及各語言中可處理
JSON 的程式庫
47
- 49. • 在 JSON 的物件格式之中:
– 名稱必須用 "" 雙引號包括。
– 值可以是 “” 雙引號包括的字串,或者是數字、
true、false、null、JavaScript 陣列(相
當於Python 的 list)或子 JSON 格式
49
- 50. • 數字、true、false、null、使用 "" 包
括的字串等,都是合法的 JSON 格式
• Python 內建了 json 模組,API 的使用上
類似 pickle
• 內建型態轉為 JSON 格式的過程稱為編碼
(Encoding)
• 將 JSON 格式轉為 Python 內建型態之過程
稱為解碼(Decoding)
50
- 52. • 將 Python 內建型態編碼為 JSON 格式,可
以使用 json.dumps()
52
- 54. • seperators 預設是 (', ', ': '),如
果指定為(',', ':'),就不會有空白了
– 像是在資料進行網路傳輸時,若能省掉不必要
的空白,就可省去不必要的流量開銷
54
- 61. • Python 建議 xml.etree.ElementTree
• 相對於 DOM 來說,ElementTree 更為簡
單而快速
• 相對於 SAX 來說,也有 iterparse() 可
以使用,可以在讀取 XML 文件的過程中即
時進行處理
61
- 68. • 可以使用 append() 來附加一個元素,使
用 insert() 來插入元素,使用 remove()
可以移除元素,使用 set() 設定元素屬性
68
- 70. • 使用 iterparse() 可以針對標籤的
'start'、'end'、'start-ns'、
'end-ns' 事件發生時,進行相對應處理
70