Submit Search
Upload
資料永續與交換
•
Download as PPTX, PDF
•
1 like
•
520 views
Justin Lin
Follow
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
Read less
Read more
Technology
Report
Share
Report
Share
1 of 72
Download now
Recommended
從模組到類別
從模組到類別
Justin Lin
深入模組管理 初識物件導向 學習定義類別 定義運算子
5. 從模組到類別
5. 從模組到類別
Justin Lin
深入模組管理 初識物件導向 學習定義類別 定義運算子
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
11. DOM、事件與樣式
11. DOM、事件與樣式
Justin Lin
認識DOM操作 處理事件 掌握樣式 建立程式庫封裝細節
5. 建構式、原型與類別
5. 建構式、原型與類別
Justin Lin
認識建構式之作用 理解原型鏈機制 區別原型與類別典範 善用類別語法
物件封裝
物件封裝
Justin Lin
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
流程語法與函式
流程語法與函式
Justin Lin
認識基本流程語法 使用 for Comprehension 認識函式與變數範圍 運用一級函式特性 使用 yield 建立產生器 初探型態提示
10. 進入瀏覽器
10. 進入瀏覽器
Justin Lin
script標籤基本特性 認識async與defer 初探同源策略與CORS 認識ES6前的模組管理 使用ECMAScript模組
Recommended
從模組到類別
從模組到類別
Justin Lin
深入模組管理 初識物件導向 學習定義類別 定義運算子
5. 從模組到類別
5. 從模組到類別
Justin Lin
深入模組管理 初識物件導向 學習定義類別 定義運算子
10. 資料永續與交換
10. 資料永續與交換
Justin Lin
使用 pickle 與 shelve 認識 DB-API 2.0 使用 sqlite3 模組 處理 CSV、JSON、XML
11. DOM、事件與樣式
11. DOM、事件與樣式
Justin Lin
認識DOM操作 處理事件 掌握樣式 建立程式庫封裝細節
5. 建構式、原型與類別
5. 建構式、原型與類別
Justin Lin
認識建構式之作用 理解原型鏈機制 區別原型與類別典範 善用類別語法
物件封裝
物件封裝
Justin Lin
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
流程語法與函式
流程語法與函式
Justin Lin
認識基本流程語法 使用 for Comprehension 認識函式與變數範圍 運用一級函式特性 使用 yield 建立產生器 初探型態提示
10. 進入瀏覽器
10. 進入瀏覽器
Justin Lin
script標籤基本特性 認識async與defer 初探同源策略與CORS 認識ES6前的模組管理 使用ECMAScript模組
從模組到類別
從模組到類別
Justin Lin
《Python 3.5 技術手冊》第 5 章投影片
9. meta-programming
9. meta-programming
Justin Lin
探索物件特性 判斷物件型態 認識Reflect API 結合Proxy與Reflect API
14. 進階主題
14. 進階主題
Justin Lin
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
進階主題
進階主題
Justin Lin
《Python 3.5 技術手冊》第 14 章投影片
進階主題
進階主題
Justin Lin
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
型態與運算子
型態與運算子
Justin Lin
《Python 3.5 技術手冊》第 3 章投影片
4. 使用物件
4. 使用物件
Justin Lin
掌握this參考 運用物件實字 認識物件協定 使用符號協定
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
反射與類別載入器
反射與類別載入器
Justin Lin
取得.class檔案資訊 動態生成物件與操作方法 認識模組與反射的權限設定 瞭解JDK9類別載入器階層 使用ClassLoader實例
資料永續與交換
資料永續與交換
Justin Lin
《Python 3.5 技術手冊》第 10 章投影片
CH04:認識物件
CH04:認識物件
Justin Lin
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器認識物件 以物件觀點看待陣列 認識字串的特性 知道如何查詢API文件
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
認識NIO 使用Channel與Buffer 使用NIO2檔案系統
Ch07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
了解何謂 JSTL 使用 JSTL 核心標籤庫 使用 JSTL 格式標籤庫 使用 JSTL XML 標籤庫 使用 JSTL 函式標籤庫
9. 資料結構
9. 資料結構
Justin Lin
認識 hashable、iterable、orderable 對物件進行排序 認識群集架構 運用 collections 模組 運用 collections.abc 模組
認識物件
認識物件
Justin Lin
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器認識物件 以物件觀點看待陣列 認識字串的特性
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
瞭解串流與輸入輸出的關係 認識InputStream、OutputStream繼承架構 認識Reader、Writer繼承架構 使用輸入輸出裝飾器類別
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
Java SE 7 技術手冊
型態與運算子
型態與運算子
Justin Lin
認識內建型態 學習字串格式化 瞭解變數與運算子 運用切片運算
CH09:Collection與Map
CH09:Collection與Map
Justin Lin
認識Collection與Map架構 使用Collection與Map實作 對收集之物件進行排序 簡介Lambda表示式 簡介泛型語法
CH10:輸入輸出
CH10:輸入輸出
Justin Lin
瞭解串流與輸入輸出 認識InputStream、OutputStream繼承架構 認識Reader、Writer繼承架構 使用輸入輸出裝飾器
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Justin Lin
Java SE 7 技術手冊
Php study.20130110
Php study.20130110
bngoogle
ABOUT php study.
More Related Content
What's hot
從模組到類別
從模組到類別
Justin Lin
《Python 3.5 技術手冊》第 5 章投影片
9. meta-programming
9. meta-programming
Justin Lin
探索物件特性 判斷物件型態 認識Reflect API 結合Proxy與Reflect API
14. 進階主題
14. 進階主題
Justin Lin
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
進階主題
進階主題
Justin Lin
《Python 3.5 技術手冊》第 14 章投影片
進階主題
進階主題
Justin Lin
運用描述器 實作裝飾器 定義 meta 類別 使用相對匯入 泛型進階
型態與運算子
型態與運算子
Justin Lin
《Python 3.5 技術手冊》第 3 章投影片
4. 使用物件
4. 使用物件
Justin Lin
掌握this參考 運用物件實字 認識物件協定 使用符號協定
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
Justin Lin
瞭解封裝觀念與實現 定義類別、建構式與方法 使用方法重載與不定長度引數 瞭解static成員
反射與類別載入器
反射與類別載入器
Justin Lin
取得.class檔案資訊 動態生成物件與操作方法 認識模組與反射的權限設定 瞭解JDK9類別載入器階層 使用ClassLoader實例
資料永續與交換
資料永續與交換
Justin Lin
《Python 3.5 技術手冊》第 10 章投影片
CH04:認識物件
CH04:認識物件
Justin Lin
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器認識物件 以物件觀點看待陣列 認識字串的特性 知道如何查詢API文件
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Justin Lin
認識NIO 使用Channel與Buffer 使用NIO2檔案系統
Ch07 使用 JSTL
Ch07 使用 JSTL
Justin Lin
了解何謂 JSTL 使用 JSTL 核心標籤庫 使用 JSTL 格式標籤庫 使用 JSTL XML 標籤庫 使用 JSTL 函式標籤庫
9. 資料結構
9. 資料結構
Justin Lin
認識 hashable、iterable、orderable 對物件進行排序 認識群集架構 運用 collections 模組 運用 collections.abc 模組
認識物件
認識物件
Justin Lin
區分基本型態與類別型態 瞭解物件與參考的關係 從包裹器認識物件 以物件觀點看待陣列 認識字串的特性
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Justin Lin
瞭解串流與輸入輸出的關係 認識InputStream、OutputStream繼承架構 認識Reader、Writer繼承架構 使用輸入輸出裝飾器類別
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Justin Lin
Java SE 7 技術手冊
型態與運算子
型態與運算子
Justin Lin
認識內建型態 學習字串格式化 瞭解變數與運算子 運用切片運算
CH09:Collection與Map
CH09:Collection與Map
Justin Lin
認識Collection與Map架構 使用Collection與Map實作 對收集之物件進行排序 簡介Lambda表示式 簡介泛型語法
CH10:輸入輸出
CH10:輸入輸出
Justin Lin
瞭解串流與輸入輸出 認識InputStream、OutputStream繼承架構 認識Reader、Writer繼承架構 使用輸入輸出裝飾器
What's hot
(20)
從模組到類別
從模組到類別
9. meta-programming
9. meta-programming
14. 進階主題
14. 進階主題
進階主題
進階主題
進階主題
進階主題
型態與運算子
型態與運算子
4. 使用物件
4. 使用物件
Java SE 8 技術手冊第 5 章 - 物件封裝
Java SE 8 技術手冊第 5 章 - 物件封裝
反射與類別載入器
反射與類別載入器
資料永續與交換
資料永續與交換
CH04:認識物件
CH04:認識物件
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Java SE 8 技術手冊第 14 章 - NIO 與 NIO2
Ch07 使用 JSTL
Ch07 使用 JSTL
9. 資料結構
9. 資料結構
認識物件
認識物件
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 8 技術手冊第 10 章 - 輸入輸出
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
Java SE 7 技術手冊投影片第 11 章 - 執行緒與並行API
型態與運算子
型態與運算子
CH09:Collection與Map
CH09:Collection與Map
CH10:輸入輸出
CH10:輸入輸出
Similar to 資料永續與交換
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Justin Lin
Java SE 7 技術手冊
Php study.20130110
Php study.20130110
bngoogle
ABOUT php study.
Ch03 請求與回應
Ch03 請求與回應
Justin Lin
取得請求參數與標頭 處理中文字元請求與回應 設定與取得請求範圍屬性 使用轉發、包含、重新導向
Ch09 整合資料庫
Ch09 整合資料庫
Justin Lin
了解 JDBC 架構 使用基本的 JDBC 透過 JNDI 取得DataSource 在 Web 應用程式整合資料庫
Chapter 4 models
Chapter 4 models
Ekman Hsieh
Django讀書會
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
Will Huang
對一個完全沒有接觸過 Kubernetes 的開發人員來說,要憑空想像這個全新架構,經常鴨子聽雷,摸不著頭緒。多奇數位創意在導入 Kubernetes 的過程中,就遇到了這個問題。 以至於在開發人員與 IT 人員溝通的過程中,產生了極大落差。保哥將在本次演說分享,多奇數位創意如何在實際導入 Kubernetes 架構的過程中,如何有效跟開發人員溝通,讓大家了解這個全新的平台跟開發人員之間的關係為何。 講者的話: 讓開發人員也能了解 Kubernetes 為他們帶來的效益,以及在 DevOps 的過程中如何有效溝通。 https://summit.ithome.com.tw/kubernetes/
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509
tidesq
主要介绍编译,链接与装载的基本概念与原理 静态链接常见错误分析, 静态链接常用链接选项使用讲解 dlopen/dlsym?常用链接选项讲解
Mysql Replication
Mysql Replication
liufabin 66688
Similar to 資料永續與交換
(8)
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Java SE 7 技術手冊投影片第 14 章 - 整合資料庫
Php study.20130110
Php study.20130110
Ch03 請求與回應
Ch03 請求與回應
Ch09 整合資料庫
Ch09 整合資料庫
Chapter 4 models
Chapter 4 models
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
開發人員必須知道的 Kubernetes 核心技術 - Kubernetes Summit 2018
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509
Linux c++ 编程之链接与装载 -基础篇--v0.3--20120509
Mysql Replication
Mysql Replication
More from Justin Lin
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Justin Lin
認識 Spring Boot 認識 Spring Tool Suite 遷移微網誌至 Spring Boot
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Justin Lin
區別程式庫與框架 逐步善用 Spring MVC 簡介 Thymeleaf 模版 使用 Spring Security
Ch12 Spring 起步走
Ch12 Spring 起步走
Justin Lin
使用 Gradle 結合 Gradle 與 IDE 認識相依注入 使用 Spring 核心
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Justin Lin
寄送純文字郵件 寄送 HTML 郵件 寄送附檔郵件
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Justin Lin
了解 Java EE 安全概念與名詞 使用容器基本驗證與表單驗 使用 HTTPS 保密資料傳輸
Ch08 自訂標籤
Ch08 自訂標籤
Justin Lin
使用 Tag File 自訂標籤 使用 Simple Tag 自訂標籤 使用 Tag 自訂標籤
Ch06 使用 JSP
Ch06 使用 JSP
Justin Lin
了解 JSP 生命週期 使用 JSP 語法元素 使用 JSP 標準標籤 使用運算式語言(EL) 自訂 EL 函式
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Justin Lin
了解 Servlet 生命週期 使用 ServletConfig 與ServletContext 使用 PushBuilder 各種傾聽器的使用 繼承 HttpFilter 實作過濾器
Ch04 會話管理
Ch04 會話管理
Justin Lin
了解會話管理基本原理 使用 Cookie 類別 使用 HttpSession 會話管理 了解容器會話管理原理
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
Justin Lin
開發環境準備與使用 了解 Web 應用程式架構 Servlet 撰寫與部署設定 了解 URI 模式對應 使用 web-fragement.xml
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
Justin Lin
認識 HTTP 基本特性 了解何為 URI 編碼 認識 Web 容器角色 了解 Servlet 與 JSP 的關係 認識 MVC/Model 2
13.並行、平行與非同步
13.並行、平行與非同步
Justin Lin
認識並行、平行與非同步 使用 threading 模組 使用 multiprocessing 模組 使用 concurrent.futures模組 運用 async、await 與 asyncio
12. 除錯、測試與效能
12. 除錯、測試與效能
Justin Lin
使用 pdb 模組除錯 對程式進行單元測試 使用 timeit 評測程式片段 使用 cProfile(profile)察看評測數據
11. 常用內建模組
11. 常用內建模組
Justin Lin
處理日期與時間 認識日誌的使用 運用規則表示式 管理檔案與目錄 URL 處理
8. open() 與 io 模組
8. open() 與 io 模組
Justin Lin
使用 open()函式 使用 stdin、stdout、stderr 認識檔案描述器 認識 io 模組
7. 例外處理
7. 例外處理
Justin Lin
使用 try、except 處理例外 認識例外繼承架構 認識 raise 使用時機 運用 finally 清除資源 使用 with as 管理資源
6. 類別的繼承
6. 類別的繼承
Justin Lin
瞭解繼承目的 認識鴨子定型 重新定義方法 認識 object 建立、尋找文件資源 泛型入門
4. 流程語法與函式
4. 流程語法與函式
Justin Lin
認識基本流程語法 使用 for Comprehension 認識函式與變數範圍 運用一級函式特性 使用 yield 建立產生器 初探型態提示
3.型態與運算子
3.型態與運算子
Justin Lin
認識內建型態 學習字串格式化 瞭解變數與運算子 運用切片運算
1. Python起步走
1. Python起步走
Justin Lin
選擇 2.x 還是 3.x? 初識 Python 資源 認識 Python 實作 建立 Python 環境
More from Justin Lin
(20)
Ch14 簡介 Spring Boot
Ch14 簡介 Spring Boot
Ch13 整合 Spring MVC/Security
Ch13 整合 Spring MVC/Security
Ch12 Spring 起步走
Ch12 Spring 起步走
Ch11 簡介 JavaMail
Ch11 簡介 JavaMail
Ch10 Web 容器安全管理
Ch10 Web 容器安全管理
Ch08 自訂標籤
Ch08 自訂標籤
Ch06 使用 JSP
Ch06 使用 JSP
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch05 Servlet 進階 API、過濾器與傾聽器
Ch04 會話管理
Ch04 會話管理
Ch02 撰寫與設定 Servlet
Ch02 撰寫與設定 Servlet
CH1. 簡介 Web 應用程式
CH1. 簡介 Web 應用程式
13.並行、平行與非同步
13.並行、平行與非同步
12. 除錯、測試與效能
12. 除錯、測試與效能
11. 常用內建模組
11. 常用內建模組
8. open() 與 io 模組
8. open() 與 io 模組
7. 例外處理
7. 例外處理
6. 類別的繼承
6. 類別的繼承
4. 流程語法與函式
4. 流程語法與函式
3.型態與運算子
3.型態與運算子
1. Python起步走
1. Python起步走
資料永續與交換
1.
2.
10. 資料永續與交換 • 學習目標 –
使用 pickle 與 shelve – 認識 DB-API 2.0 – 使用 sqlite3 模組 – 處理 CSV、JSON、XML 2
3.
使用 pickle 模組 •
如果要序列化 Python 物件,可以使用內建 的 pickle 模組 • 將一個Python 物件轉換為 bytes,這稱為 Pickling,相反的操作則稱之為 unpickling, 會將 bytes 轉換為 Python 物件 3
4.
• 若想將物件轉換為 bytes,可以使用 dumps()
函式 • 若想將一個代表物件的 bytes 轉換為物件, 可以使用 loads() 函式 4
5.
• 可以 pickling
與unpickling 的型態包括內 建型態、使用者自定義的頂層函式、類別 等 • 如果無法進行 pickling 或 unpickling,就 會引發 PicklingError 或 UnpicklingError 5
6.
• 保存在檔案,從檔案讀取 6
7.
7
8.
8
9.
• pickling 時實際採用的模式,是
Python 的 專屬格式 • pickle 的保證是能向後相容未來的新版本 • 可以使用 pickle.HIGHEST_PROTOCOL 來得知目前可用的最新格式版本為哪一個 • pickle.DEFAULT_PROTOCOL 則是 pickle 模組的預設版本 • 如果必要指定格式版本, • 可以在使用 dumps()、dump()、loads() 或 load() 時,指定其 protocol 參數 9
10.
使用 shelve 模組 •
shelve 物件行為上像是字典的物件 • 鍵的部份必須是字串,值的部份可以是 pickle 模組可處理的 Python 物件 • 它直接與一個檔案關聯,因此使用上就像 個簡單的資料庫介面 10
11.
11
12.
12
13.
13
14.
14
15.
認識 DB-API 2.0 •
DB-API 2.0 由PEP 249 規範,所有的資料 庫介面都應該符合這個規範 • 以便撰寫程式時能有一致的方式,撰寫出 來的程式也便於跨資料庫執行 • Connection 基本上要具備以下的方法: 15
16.
• Cursor 物件基本上必須具備以下方法: 16
17.
使用 sqlite3 模組 •
Python 中內建了 SQLite 資料庫,這是個 用 C 語言撰寫的輕量級資料庫 • 資料庫本身的資料可以儲存在一個檔案中, 或者是記憶體之中,後者對於資料庫應用 程式的測試非常的方便 • 若想使用 SQLite 作為資料庫,並撰寫 Python 程式與資料庫進行操作,可以使用 sqlite3 模組 17
18.
建立資料庫與連線 • 可以傳給 connect()
一個 ':memory:' 字串,這樣會在記憶體中建立一個資料庫 18
19.
建立表格與新增資料 19
20.
• Connection 物件實作了情境管理器,可 以搭配
with 陳述使用 • 在 with 區塊的動作完成之後,會自動 commit() 與 close(),若發生例外,則 會自動 rollback() 20
21.
• 若要新增一筆資料,也是使用 Cursor
的 execute()方法 21
22.
查詢資料 • 先用 Cursor
的 execute()執行查詢語句 • fetchone() 可以取得結果集合中的一筆 資料 • fetchall()取得結果集合中的全部資料 • fetchmany() 指定要從結果集合中取得幾 筆資料 22
23.
更新與刪除資料 23
24.
參數化 SQL 語句 •
直接使用 + 來串接字串以組成 SQL,容易 引發 SQL Injection 的安全問題 24
25.
• 使用 f-strings、字串的
format(),或者 是舊式的 % 進行格式化,也會有同樣問題 25
26.
• Cursor 的
execute() 方法本身可以將 SQL 語句參數化 • 有兩種參數化的方式:使用問號(?)或具 名佔位符號 26
27.
• 如果你有多筆 SQL
必須執行,雖然可以使 用 for in 自行處理: 27
28.
• 用 Cursor
的 executemany() 會更方便: 28
29.
簡介交易 • 交易的四個基本: – 要求原子性(Atomicity) –
一致性(Consistency) – 隔離行為(Isolation behavior) – 持續性(Durability) • 依英文字母首字簡稱為 ACID 29
30.
• 除了一些會隱含地提交之情況,sqlite3 模組的預設實作,並不會自動提交 • 必須自行呼叫
Connection 的 commit() 來進行提交 • 如果交易過程因為發生錯誤或其他情況, 必須撤回交易時,可以呼叫 Connection 的 rollback() 撤回操作 30
31.
• 一個基於例外發生時必須撤消交易的示範: 31
32.
• 在隔離性方面,SQLite 資料庫在更新資料 的相關操作時,預設會鎖定資料庫直到該 次交易完成 •
多個連線時就會造成等待的狀況 • sqlite3 模組的 connect() 函式有個 timeout 可指定等待多久,若逾時就引發 例外,預設是 5.0,也就是是 5 秒 32
33.
• sqlite3 模組的
Connection 物件有個 isolation_level 屬性,可用來設定或 得知目前的隔離性設定 • 預設是'',實際上在 SQLite 資料庫就會產 生 BEGIN 陳述 • 如果 isolation_level 被設置為 None, 表示不做任何的隔離性,也就成為自動提 交,每次 SQL 更新相關操作時,就不用自 行呼叫 Connection 的 commit()方 法 33
34.
• 不設隔離性,在多個連線存取資料庫的情 況下,就會引發資料不一致的問題 – 更新遺失(Lost
update) – 髒讀(Dirty read) – 無法重複的讀取(Unrepeatable read) – 幻讀(Phantom read) 34
35.
更新遺失 35
36.
髒讀 36
37.
無法重複的讀取 37
38.
幻讀 • 同一交易期間,讀取到的資料筆數不一致。 例如交易 A
第一次讀取得到五筆資料,此 時交易 B 新增了一筆資料,導致交易 B 再 次讀取得到六筆資料。 38
39.
• 由於各家資料對於交易的支援程度並不相 同,實際上該採用與如何進行設定也就有 所差異 • 就
sqlite3 模組的實作來說, Connection 物件的 isolation_level 還可以設定 SQLite 資料庫支援的隔離層級 'DEFERRED'、'IMMEDIATE' 或 'EXCLUSIVE' 39
40.
CSV • 全名為 Comma
Separated Values,是通 用在試算表、資料庫間的資料交換格式 • Python 提供了 csv 模組,可隱藏 CSV 的 讀寫細節,讓開發人員輕鬆處理 CSV 格式 40
41.
41
42.
42
43.
• 若想將先前下載的 CSV
檔案轉存為 UTF-8 的話 43
44.
• 可以使用 csv
的 DictReader()、 DictWriter(),將 CSV 以 dict 的方式 處理 44
45.
• 使用 fieldnames
自行指定欄位名稱: 45
46.
• 有一些 dict,想要寫出為CSV: 46
47.
47
48.
48
49.
JSON • 全名 JavaScript
Object Notation,為 JavaScript 物件實字 • 可以在〈Introducing JSON〉找到詳細的 JSON 格式說明,以及各語言中可處理 JSON 的程式庫 49
50.
• 在 Python
中可以使用 dict 與 list 等來 模仿: 50
51.
• 在 JSON
的物件格式之中: – 名稱必須用 "" 雙引號包括。 – 值可以是 “” 雙引號包括的字串,或者是數字、 true、false、null、JavaScript 陣列(相 當於Python 的 list)或子 JSON 格式 51
52.
• 數字、true、false、null、使用 ""
包 括的字串等,都是合法的 JSON 格式 • Python 內建了 json 模組,API 的使用上 類似 pickle • 內建型態轉為 JSON 格式的過程稱為編碼 (Encoding) • 將 JSON 格式轉為 Python 內建型態之過程 稱為解碼(Decoding) 52
53.
53
54.
• 將 Python
內建型態編碼為 JSON 格式,可 以使用 json.dumps() 54
55.
• indent 參數可指定數字,這會為JSON
格 式加上指定的空白數量進行縮排: 55
56.
• seperators 預設是
(', ', ': '),如 果指定為(',', ':'),就不會有空白了 – 像是在資料進行網路傳輸時,若能省掉不必要 的空白,就可省去不必要的流量開銷 56
57.
• 如果呼叫 json.dump()
時指定了非內建 型態,預設是會引發 TypeError: 57
58.
• 可以指定一個轉換函式給 default
參數, 轉換函式必須傳回 Python 內建型態,以進 行 JSON 編碼: 58
59.
• 若要將物件編碼為 JSON
並寫至檔案: • 要將 JSON 格式解碼為內建型態物件: 59
60.
• 可以在使用 json.loads()
時,指定一個 函式給 object_hook: 60
61.
• 若要從檔案中讀取 JSON
並解碼: 61
62.
XML • 在處理XML 時,Python
提供了幾個模組: – xml.dom – xml.sax – xml.etree 62
63.
• Python 建議
xml.etree.ElementTree • 相對於 DOM 來說,ElementTree 更為簡 單而快速 • 相對於 SAX 來說,也有 iterparse() 可 以使用,可以在讀取 XML 文件的過程中即 時進行處理 63
64.
64
65.
• 取得 XML
中全部的標籤名稱: 65
66.
• 可以使用 fromstring()
來剖析 XML 字 串,這會直接傳回一個 Element 實例,代 表著XML 字串的根節點 66
67.
67
68.
• 可以指定 XPath
表示式來取得想要的標籤: 68
69.
• 想要直接取得 XML
字串的 bytes 資料, 可以使用 tostring(): 69
70.
• 可以使用 append()
來附加一個元素,使 用 insert() 來插入元素,使用 remove() 可以移除元素,使用 set() 設定元素屬性 70
71.
71
72.
• 使用 iterparse()
可以針對標籤的 'start'、'end'、'start-ns'、 'end-ns' 事件發生時,進行相對應處理 72
Download now