第1章 課前準備
1-1 Python DB API介紹
- 背景:沒有Python DB API之前读串,接口程序混亂,Python應用程序(包含sql)需要對接各種數(shù)據(jù)庫;
- Python DB API:Python訪問數(shù)據(jù)庫的統(tǒng)一接口規(guī)范恢暖,統(tǒng)一對接各種不同的數(shù)據(jù)庫排监;
-
內(nèi)容
- 流程
1-2 Python開發(fā)MySql環(huán)境
第2章 Python操作數(shù)據(jù)庫
2-1 Python數(shù)據(jù)庫連接對象connection
- 連接對象:建立python客戶端與數(shù)據(jù)庫的網(wǎng)絡連接;
- 創(chuàng)建方法:
MySqldb.Connect
(參數(shù))杰捂,支持如下6個參數(shù):
參數(shù)名 | 類型 | 說明 |
---|---|---|
host | 字符串 | MySql服務器地址 |
port | 數(shù)字 | MySql服務器端口 |
user | 字符串 | 用戶名 |
password | 字符串 | 密碼 |
db | 字符串 | 數(shù)據(jù)庫名稱 |
charset | 字符串 | 連接編碼 |
-
connection
對象支持的方法
參數(shù)名 | 類型 |
---|---|
cursor() | 使用該連接創(chuàng)建并返回游標 |
commit() | 提交當前事務 |
rollback() | 回滾當前事務 |
close() | 關(guān)閉連接 |
2-2 Python游標對象cursor
- 游標對象:用于執(zhí)行查詢社露,并獲取結(jié)果;
- 游標對象cursor支持的方法琼娘;
方法名 | 說明 |
---|---|
execute(op [,args]) | 執(zhí)行一個數(shù)據(jù)庫查詢和命令 |
fetchone() | 獲取結(jié)果集的下一行 |
fetchmany(size) | 獲取結(jié)果集的下幾行 |
fetchall() | 獲取結(jié)果集剩下的所有行 |
rowcount() | 最近一次execute返回數(shù)據(jù)的行數(shù)或影響行數(shù) |
close() | 關(guān)閉游標對象 |
-
execute()
:執(zhí)行SQL命令,將結(jié)果從數(shù)據(jù)庫獲取到客戶端附鸽,過程如下 -
fetch*()
:移動rownumber
脱拼,返回數(shù)據(jù)。MySqldb這個插件坷备,是使用rownumber變量實現(xiàn)數(shù)據(jù)遍歷的熄浓,類似于數(shù)組的指針,對數(shù)組的遍歷就是靠移動指針進行遍歷省撑,下一次遍歷是根據(jù)指針的位置獲取對應的數(shù)據(jù)赌蔑;
-
rowcount()
:是一個屬性,可以返回緩沖區(qū)中所有數(shù)據(jù)的行數(shù)竟秫。
第3章 Python增刪改查數(shù)據(jù)庫
3-1 Python之select查詢數(shù)據(jù)
-
select
查詢數(shù)據(jù)的執(zhí)行流程
3-2 Python之insert/update/delete更新數(shù)據(jù)庫
-
更新數(shù)據(jù)庫的執(zhí)行流程
- 事務:訪問和更新數(shù)據(jù)庫的一個程序執(zhí)行單元娃惯,程序執(zhí)行單元即為很多execute操作的集合;
- 事務的特點
- 原子性:事務中的所有操作肥败,要么都做趾浅、要么都不做;
- 一致性:事務必須使數(shù)據(jù)庫從一致性狀態(tài)變到另一個一致性狀態(tài)馒稍;
- 隔離性:一個事務的執(zhí)行皿哨,不能被其它事務干擾;
- 持久性:事務一旦提交纽谒,它對數(shù)據(jù)庫的改變就是永久性的证膨。
- 事務的方法
- 關(guān)閉自動
commit
:設置connection.autocommit(False),MySqldb插件已經(jīng)默認設置commit為自動關(guān)閉鼓黔; - 正常結(jié)束事務:connection.commit()央勒,使前面所有的操作正常生效;
- 異常結(jié)束事務:connection.rollback()请祖,使前面所有的操作回到?jīng)]有被執(zhí)行的狀態(tài)订歪,即回滾。
3-3 Python之實例:銀行轉(zhuǎn)賬
-
執(zhí)行流程