python--數據庫支持


一、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的用法:

                         

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM