標籤:資料庫 遊標對象 復原 提交 串連
資料庫支援python資料庫API
支援sql標準的可用資料庫有很多,其中多數在python中都有對應的用戶端模組。
全域變數
python DB API的模組特性
變數名 |
用途 |
apilevel |
所使用的python db api版本 |
threadsafety |
模組的安全執行緒等級 |
paramstyle |
在sql查詢中使用的參數風格 |
異常
異常 |
超類 |
描述 |
StandardError |
|
所有異常的泛型基類 |
Warning |
StandardError |
在非致命錯誤發生時引發 |
Error |
StandardError |
所有錯誤條件的泛型超類 |
InterfaceError |
Error |
關於介面而非資料庫的錯誤 |
DatabaseError |
Error |
與資料庫相關的錯誤的基類 |
DataError |
DatabaseError |
與資料庫相關的問題,比如值超出範圍 |
OperationalError |
DatabaseError |
資料庫內部操作錯誤 |
IntegrityError |
DatabaseError |
關係完整性受到影響,比如鍵檢查失敗 |
InternalError |
DatabaseError |
資料庫內部錯誤,比如非法遊標 |
ProgrammingError |
DatabaseError |
使用者編譯錯誤,比如未找到表 |
NotSupportedError |
DatabaseError |
請求不支援的特性(比如復原) |
為了使用基礎資料庫系統,首先必須串連到它。需要使用具有恰當名稱的connect函數,該函數有多個參數,而具體使用哪個參數取決於資料庫。
connect函數是常用參數
參數 |
描述 |
是否可選 |
dsn |
資料來源名稱,給出該參數表示資料庫依賴 |
否 |
user |
使用者名稱 |
是 |
password |
使用者密碼 |
是 |
host |
主機名稱 |
是 |
database |
資料庫名 |
是 |
連線物件方法
方法名 |
描述 |
close() |
關閉串連之後,連線物件和它的遊標均不可用 |
commit() |
如果支援的話就提交掛起的事務,否則不做任何事 |
rollback() |
復原掛起的事務(可能不可用) |
cursor() |
返回串連的遊標對象 |
rollback方法可能不可用,因為不是所有的資料庫都支援事務。
commit方法總是可用,但如果資料庫不支援事務,它就沒有任何作用。如果關閉了串連,但還有未提交的事務,它們會隱式地復原——但只有在資料庫支援復原的時候才可以。
cursor方法引入另外一個主題:遊標對象。通過遊標執行sql查詢並檢查結果,遊標比串連支援更多的方法,而且可能在程式中更好用。
遊標對象方法
名稱 |
描述 |
callproc(name[,params]) |
使用給定的名稱和參數(可選)調用已命名的資料庫程式 |
close() |
關閉遊標之後,遊標不可用 |
execute(oper[,params]) |
執行sql操作,可能使用參數 |
execute(oper,pseq) |
對序列中的每個參數執行sql操作 |
fetchone() |
把查詢的結果集中的下一行儲存為序列或者None |
fetchmany([size]) |
擷取查詢結果集中的多行,預設尺寸為arraysize |
fetchall() |
將所有(剩餘)的行作為序列的序列 |
nextset() |
跳至下一個可用的結果集(可選) |
setinputsizes(sizes) |
為參數預先定義記憶體地區 |
setoutputsize(size[,col]) |
為擷取的大資料值設定緩衝區尺寸 |
遊標對象特性
名稱 |
描述 |
description |
結果列描述的序列,唯讀 |
rowcount |
結果中的行數,唯讀 |
arraysize |
fetchmany中返回的行數,預設為1 |
類型
資料庫對插入到具有某種類型的列中的值有不同的要求,是為了能正確地與基礎sql資料庫進行互動操作,DB API定義了用於特殊類型和值的建構函式及常量(單例模式)。
DB API建構函式和特殊值
名稱 |
描述 |
Date(year,month,day) |
建立儲存日期值的對象 |
Time(hour,minute,second) |
建立儲存時間值的對象 |
Timestamp(y,mon,d,h,min,s) |
建立儲存時間戳記值的對象 |
DateFromTicks(ticks) |
建立儲存來自新紀元以來秒數的對象 |
TimeFromTicks(ticks) |
建立儲存來自秒數的時間值的對象 |
TimestampFromTicks(ticks) |
建立儲存來自秒數的時間戳記值的對象 |
Binary(string) |
建立儲存二進位字串值的對象 |
STRING |
描述基於字串的列類型 |
BINARY |
描述二進位列 |
NUMBER |
描述數字列 |
DATETIME |
描述日期/時間列 |
ROWID |
描述行ID列 |