Python操作數(shù)據(jù)庫之?dāng)?shù)據(jù)庫編程接口
一、前言
在項目開發(fā)中,數(shù)據(jù)庫應(yīng)用必不可少。雖然數(shù)據(jù)庫的種類有很多,如SQLite、MySQL、Oracle等,但是它們的功能基本是一樣都是一樣的,為對數(shù)據(jù)庫統(tǒng)一的操作,大多數(shù)語言都提供了簡單的、標(biāo)準(zhǔn)化的接口(API)。在Python Database API 2.0規(guī)范中,定義了Python數(shù)據(jù)庫API接口的各個部分,如模塊接口、連接對象、游標(biāo)對象、類型對象和構(gòu)造器、DB API的可選擴(kuò)展以及可選的錯誤處理機(jī)制等。本文將重點介紹數(shù)據(jù)庫的連接對象和游標(biāo)對象。
二、連接對象
數(shù)據(jù)庫連接對象(Connection Object)主要提供獲取數(shù)據(jù)庫游標(biāo)對象和提交/回滾事務(wù)的方法,以及如何關(guān)閉數(shù)據(jù)庫連接。
1.獲取連接對象
如何獲取連接對象呢?這就需要使用connect()函數(shù)。該函數(shù)有多個參數(shù),具體使用那個參數(shù),取決于使用的數(shù)據(jù)庫類型。例如,需要訪問Oracle數(shù)據(jù)庫和MySQL數(shù)據(jù)庫,必須同時下載Oracle和MySQL數(shù)據(jù)庫模塊。這些模塊在獲取連接對象時,都需要使用connect()函數(shù)。
connect()函數(shù)常用的參數(shù)及說明如下表:
例如,使用PyMySQL模塊連接MySQL數(shù)據(jù)庫,示例代碼如下:
import pymysql conn = pymysql.connect( host="localhost", password="123456", db="test", charset="utf8", cursorclass=pymysql.cursors.DictCursor)
說明: 上述代碼中,pymysql.connect()方法使用的參數(shù)與上表并不完全相同。在使用時,要以具體的數(shù)據(jù)庫模塊為準(zhǔn)。
2.連接對象的方法
connect()函數(shù)返回連接對象,這個對象表示目前和數(shù)據(jù)庫的會話,連接對象支持的方法如下表所示:
方法名說明close()關(guān)閉數(shù)據(jù)庫連接commit()提交事務(wù)rollback()回滾事務(wù)cursor()獲取游標(biāo)對象,操作數(shù)據(jù)庫,如執(zhí)行DML操作,調(diào)用存儲過程等
事務(wù)主要用于處理數(shù)據(jù)量大、復(fù)雜度高的數(shù)據(jù)。如果操作的是一系列的動作,比如小菜雞給小白轉(zhuǎn)賬,
有如下2個操作:
- 小菜雞的賬戶金額減少
- 李四賬戶金額增加
這時使用事務(wù)可以維護(hù)數(shù)據(jù)庫的完整性,保證2個操作要么全部執(zhí)行,要么全部不執(zhí)行。
三、游標(biāo)對象
游標(biāo)對象(Cursor Object)代表數(shù)據(jù)中的游標(biāo),用于指示抓取數(shù)據(jù)操作的上下文。主要提供執(zhí)行SQL語句、調(diào)用存儲過程、獲取查詢結(jié)果等方法。
如何獲取游標(biāo)對象呢?通過連接對象的cursor()方法,可以獲取到游標(biāo)對象。
游標(biāo)對象的屬性如下所示:
- description:數(shù)據(jù)庫列類型和值的描述信息。
- rowcount:回返結(jié)果的行數(shù)統(tǒng)計信息,如SELECT,UPDATE,CALLPROC等。
游標(biāo)對象的方法如下表所示:
方法名說明callproc(procname,[,parameters])調(diào)用存儲過程,需要數(shù)據(jù)庫支持close()關(guān)閉當(dāng)前游標(biāo)execute(operation,[,parameters])執(zhí)行數(shù)據(jù)庫操作,SQL語句或者數(shù)據(jù)庫命令executemany(operation,seq_of_params)用于批量操作,如批量更新fetchone()獲取查詢結(jié)果的下一條記錄fetchmany(size)獲取指定量的記錄fetchall()獲取結(jié)果集的所有記錄nextset()跳至下一個可用的結(jié)果集arraysize指定使用fetchmany()獲取的行數(shù),默認(rèn)為1setinputsizes(sizes)設(shè)置在調(diào)用execute*()方法時分配的內(nèi)存區(qū)域大小setoutputsize(sizes)設(shè)置列緩沖區(qū)大小,對大數(shù)據(jù)列如LONGS和BLOBS尤其有用
到此這篇關(guān)于Python操作數(shù)據(jù)庫之?dāng)?shù)據(jù)庫編程接口的文章就介紹到這了,更多相關(guān)Python編程接口內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python 通過手機(jī)號識別出對應(yīng)的微信性別(實例代碼)
這篇文章主要介紹了python 通過手機(jī)號識別出對應(yīng)的微信性別,本文通過實例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友可以參考下2019-12-12python爬蟲指南之xpath實例解析(附實戰(zhàn))
在進(jìn)行網(wǎng)頁抓取的時候,分析定位html節(jié)點是獲取抓取信息的關(guān)鍵,目前我用的是lxml模塊,下面這篇文章主要給大家介紹了關(guān)于python爬蟲指南之xpath實例解析的相關(guān)資料,需要的朋友可以參考下2022-01-01Python實用技巧之列表、字典、集合中根據(jù)條件篩選數(shù)據(jù)詳解
這篇文章主要給大家介紹了關(guān)于Python技巧之在列表、字典、集合中根據(jù)條件篩選數(shù)據(jù)的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧2018-07-07python中使用urllib2獲取http請求狀態(tài)碼的代碼例子
這篇文章主要介紹了python中使用urllib2獲取http請求狀態(tài)碼的代碼例子,需要的朋友可以參考下2014-07-07python seaborn heatmap可視化相關(guān)性矩陣實例
這篇文章主要介紹了python seaborn heatmap可視化相關(guān)性矩陣實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-06-06tensorflow 只恢復(fù)部分模型參數(shù)的實例
今天小編就為大家分享一篇tensorflow 只恢復(fù)部分模型參數(shù)的實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-01-01Python棧算法的實現(xiàn)與簡單應(yīng)用示例
這篇文章主要介紹了Python棧算法的實現(xiàn)與簡單應(yīng)用,簡單講述了棧的原理并結(jié)合實例形式給出了基于棧實現(xiàn)的進(jìn)制轉(zhuǎn)換與括號匹配等相關(guān)使用技巧,需要的朋友可以參考下2017-11-11