網站首頁 編程語言 正文
一、前言
在項目開發中,數據庫應用必不可少。雖然數據庫的種類有很多,如SQLite、MySQL、Oracle等,但是它們的功能基本是一樣都是一樣的,為對數據庫統一的操作,大多數語言都提供了簡單的、標準化的接口(API)。在Python Database API 2.0規范中,定義了Python數據庫API接口的各個部分,如模塊接口、連接對象、游標對象、類型對象和構造器、DB API的可選擴展以及可選的錯誤處理機制等。本文將重點介紹數據庫的連接對象和游標對象。
二、連接對象
數據庫連接對象(Connection Object)主要提供獲取數據庫游標對象和提交/回滾事務的方法,以及如何關閉數據庫連接。
1.獲取連接對象
如何獲取連接對象呢?這就需要使用connect()函數。該函數有多個參數,具體使用那個參數,取決于使用的數據庫類型。例如,需要訪問Oracle數據庫和MySQL數據庫,必須同時下載Oracle和MySQL數據庫模塊。這些模塊在獲取連接對象時,都需要使用connect()函數。
connect()函數常用的參數及說明如下表:
例如,使用PyMySQL模塊連接MySQL數據庫,示例代碼如下:
import pymysql
conn = pymysql.connect(
host="localhost",
password="123456",
db="test",
charset="utf8",
cursorclass=pymysql.cursors.DictCursor)
說明: 上述代碼中,pymysql.connect()方法使用的參數與上表并不完全相同。在使用時,要以具體的數據庫模塊為準。
2.連接對象的方法
connect()函數返回連接對象,這個對象表示目前和數據庫的會話,連接對象支持的方法如下表所示:
方法名說明close()關閉數據庫連接commit()提交事務rollback()回滾事務cursor()獲取游標對象,操作數據庫,如執行DML操作,調用存儲過程等
事務主要用于處理數據量大、復雜度高的數據。如果操作的是一系列的動作,比如小菜雞給小白轉賬,
有如下2個操作:
- 小菜雞的賬戶金額減少
- 李四賬戶金額增加
這時使用事務可以維護數據庫的完整性,保證2個操作要么全部執行,要么全部不執行。
三、游標對象
游標對象(Cursor Object)代表數據中的游標,用于指示抓取數據操作的上下文。主要提供執行SQL語句、調用存儲過程、獲取查詢結果等方法。
如何獲取游標對象呢?通過連接對象的cursor()方法,可以獲取到游標對象。
游標對象的屬性如下所示:
- description:數據庫列類型和值的描述信息。
- rowcount:回返結果的行數統計信息,如SELECT,UPDATE,CALLPROC等。
游標對象的方法如下表所示:
方法名說明callproc(procname,[,parameters])調用存儲過程,需要數據庫支持close()關閉當前游標execute(operation,[,parameters])執行數據庫操作,SQL語句或者數據庫命令executemany(operation,seq_of_params)用于批量操作,如批量更新fetchone()獲取查詢結果的下一條記錄fetchmany(size)獲取指定量的記錄fetchall()獲取結果集的所有記錄nextset()跳至下一個可用的結果集arraysize指定使用fetchmany()獲取的行數,默認為1setinputsizes(sizes)設置在調用execute*()方法時分配的內存區域大小setoutputsize(sizes)設置列緩沖區大小,對大數據列如LONGS和BLOBS尤其有用
原文鏈接:https://yunhua.blog.csdn.net/article/details/124832604
相關推薦
- 2022-03-23 Qt實現兩個獨立窗口的信號通信_C 語言
- 2024-01-10 CloneNotSupportedException的解決方案 + Object的clone方法分析
- 2022-06-21 分享四個python接口常用封裝函數_python
- 2022-03-25 Redis分布式鎖如何實現續期_Redis
- 2023-12-14 excel統計某個字符出現的次數,判斷某單元格的數據是否在另外一列
- 2022-05-31 如何使用yolov5輸出檢測到的目標坐標信息_python
- 2022-08-04 docker搭建fastdfs環境的方法步驟_docker
- 2024-03-06 PageHelper插件的使用
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支