一、python數據庫編程接口(API):
1、全局變量:任何支持2.0版本DB API的數據庫模塊都必須定義3個描述模塊特性的全局變量,這樣做的原因是API設計很靈活,以支持不同的底層機制。
1、apilevel:字符串常量,提供正在使用的API版本號。
2、threadsafety:模塊的線程安全等級,是個取值范圍為0-3的整數。0表示線程完全不共享模塊。3表示線程完全共享模塊。1表示線程本身共享模塊,但不對連接共享。
3、paramstyle:在SQL查詢中使用的參數風格(在執行多次類似查詢的時候,參數是如何被拼接到SQL查詢中的)。
'format'表示標准的字符串格式化,可以在參數中進行拼接的地方插入%s。
'pyformat'表示擴展的格式代碼,用於字典拼接中,比如%(foo)。
'qmark'使用問號。
'numeric'使用:1或者:2格式字段(數字表示參數的序號)。
'named'表示foobar這樣的字段,其中foobar為參數名。
2、異常:API定義了一種層次結構的異常,以便盡可能進行錯誤處理。
1、StandardError:所有異常的泛型基類。
2、Waring:它的超類StandardError,在非致命錯誤時引發。
3、Error:它的超類StandardError,所有錯誤條件的泛型超類。
4、InterfaceError:它的超類Error,關於接口而非數據庫的錯誤。
5、DatabaseError:它的超類Error,與數據庫相關的錯誤的基類。
6、DataError:它的超類DatabaseError,與數據相關的問題,比如值超出范圍。
7、OperationalError:它的超類DatabaseError,數據庫內部操作錯誤。
8、IntegityError:它的超類DatabaseError,關系完整性受到影響,比如鍵檢查失敗。
9、InternalError:它的超類DatabaseError,數據庫內部錯誤,比如非法游標。
10、ProgramingError:它的超類DatabaseError,用戶編程錯誤,比如未找到表。
11、NotSupportedError:它的超類DatabaseError,請求不支持的特性(比如回滾)
3、連接和游標:
1、連接connect函數:
connect函數常用的參數:
1、dsn:數據源名稱,給出該參數表示數據庫依賴。
2、user:用戶名。
3、password:用戶密碼。
4、host:主機名。
5、database:數據庫名。
connect函數返回連接對象,表示目前和數據庫的會話。連接對象支持的方法:
1、close():關閉連接,關閉后連接對象和它的游標均不可用。
2、commit():如果支持的話就提交掛起事務,否則不做任何事情。
3、rollback():回滾掛起的事務。(可能不可用)。
4、cursor():返回連接的游標對象。
2、游標對象:通過游標執行SQL查詢並檢查結果。
游標對象的方法:
1、callproc(name,[, params]):使用給定名稱和參數調用已命名的數據庫過程。
2、close():關閉游標。
3、execute(oper,[, params]) :執行一個SQL操作,可能帶有參數。
4、executemany(oper,pseq):對序列中的每個參數集執行SQL操作。
5、fetclone():把查詢的結果集中的下一行保存為序列,或者None。
6、fetchmany([size]):獲取查詢結果集中的多行,默認尺寸為arraysize。
7、fetchall():將所有剩余的行作為序列的序列。
8、nextset():跳轉下一個可以的結果集(可選)。
9、setinputsizes(sizes):為參數預先定義內存區域。
10、setoutputsize(size[, col]):為獲取的大數據值設定緩存區尺寸。
2、游標對象的特性:
1、description:結果列描述的序列,只讀。
2、rowcount:結果中的行數,只讀。
3、arraysize:fetchmany中返回的函數,默認1。
4、類型:DB API定義了用於特殊類型和值的構造函數及常量(單例模式)。
1、Date(year,month,day):創建保存日期值的對象。
2、Time(hour,minute,second):創建保存時間值的對象。
3、Timestamp(y,mon,d,h,min,s):創建保存時間戳值的對象。
4、DateFromTicks(ticks):創建保存自新紀元以來秒數的對象。
5、TimeFromTicks(ticks):創建保存來自秒數的時間值對象。
6、TimestampFromTicks(ticks):創建保存來自秒數的時間戳值的對象。
7、Binary(string):創建保存二進制字符串值的對象。
8、SIRING:描述基於字符串的列類型(比如CHAR)。
9、BINARY:描述二進制列(比如LONG或RAW)。
10、NUMBER:描述數字列。
11、DATETIME:描述日期\時間列。
12、ROWID:描述行ID列。
5、數據庫應用程序示例:
1、創建一個people表,包含id,name,age字段。
2、往people表中插入1行數據,id=1,name=lisa,age=25
3、查詢
使用fetchone():把查詢的結果集的下一行作為序列或者None:
使用fetchall():把查詢結果集的所有行作為序列的序列。
迭代對象遍歷:
4、刪除數據
5、一次插入多條數據:
1、參數綁定:
2、使用executemany():
3、利用生成器實現:
5、update:
6、delete:
7、select:
8、executescript的用法: