Python环境下的数据库编程
數據庫編程
- 簡介
- 數據庫三種數據模型
- ADO、DAO、ODBC
- 使用DAO訪問數據庫
- 使用ODBC 訪問數據庫
- 三者區別
簡介
在應用程序中有很多信息需要存儲起來,存儲的方式有多種,數據庫就是其中的一種。比較流行的數據庫模型有三種,分別為層次式數據庫、網絡式數據庫和關系型數據庫。最常用的數據庫模型是關系型數據庫。
數據庫三種數據模型
- 層次模型
層次模型是數據庫系統最早使用的一種模型,它的數據結構是一棵“有向樹”。根結點在最上端,層次最高,子結點在下,逐層排列。層次模型的特征是:
-
有且只有一個根結點
-
其他結點有且僅有一個父結點
-
網狀模型
網狀模型以網狀結構表示實體與實體之間的聯系。網中的每一個結點代表一個記錄類型,聯系用鏈接指針來實現。網狀模型可以表示多個從屬關系的聯系,也可以表示數據間的交叉關系,即數據間的橫向關系與縱向關系,它是層次模型的擴展。網狀模型可以方便地表示各種類型的聯系,但結構復雜,實現的算法難以規范化。其特征是:
- 允許結點有多于一個父結點;
- 可以有一個以上的結點沒有父結點。
關系模型
關系模型以二維表結構來表示實體與實體之間的聯系,它是以關系數學理論為基礎的。關系模型的數據結構是一個“二維表框架”組成的集合。每個二維表又可稱為關系。在關系模型中,操作的對象和結果都是二維表。關系模型是目前最流行的數據庫模型。支持關系模型的數據庫管理系統稱為關系數據庫管理系統,Access就是一種關系數據庫管理系統。
- 描述的一致性,不僅用關系描述實體本身,而且也用關系描述實體之間的聯系;
- 可直接表示多對多的聯系;
- 關系必須是規范化的關系,即每個屬性是不可分的數據項,不許表中有表;
- 關系模型是建立在數學概念基礎上的,有較強的理論依據。
ADO、DAO、ODBC
Python提供了多種連接數據庫的手段,包括DAO、ODBC、ADO以及
Python專用模塊等。
使用DAO訪問數據庫
DAO(Data Access Object)是常見的一種連接數據庫的方式,它適用于小型應用程序。DAO提供了操作管理關系型數據庫系統所需的屬性和方法,包括創建數據庫、定義表、字段和索引,以及查詢、添加、刪除、修改等操作。
使用的庫是pywin32
使用ODBC 訪問數據庫
ODBC(Open Database Connectivity,開放數據庫互連)是Micros Sott公司提出的數據庫訪問通用接口標準。ODBC是一個數據庫訪問函數庫,使應用程序可以直接操縱數據庫中的數據。
ODBC基于SQL語言,是一種在SQL和應用界面之間的標準接口,它生成的程序與數據庫或數據庫引擎無關,為數據庫用戶和開發人員提供了數據庫訪問的統一接口,為應用程序實現與平臺的無關 應用程序性和可移植性提供了基礎。ODBC由應用程序、驅動 驅動程序管理器程序管理器、驅動程序、數據源構成,如圖所示。
- 應用程序:應用程序調用ODBC函數,完成連接數據庫、提交執行語句給數據庫、檢索結果并處理錯誤、提交或者執行回滾語句的事務、與數據庫斷
開連接等操作。 - 驅動程序管理器:各種不同的數據庫都需要向ODBC驅動程序管理器注冊ODBC驅動程序,ODBC驅動程序管理器能將與ODBC兼容的執行請求從應用程序傳給驅動程序,隨后對數據庫實現訪問操作。
- 驅動程序:ODBC通過驅動程序來提供數據庫獨立性。
- 數據源:用戶自定義的數據庫服務器的名稱、登錄名和密碼等信息。
三者區別
-
ODBC是一種底層的訪問技術,因此,odbc api 可以是客戶應用程序能從底層設置和控制數據庫,完成一些高級數據庫技術無法完成的功能;但不足之處由于odbc只能用于關系型數據庫,使得利用odbc很難訪問對象數據庫及其他非關系數據庫。
-
DAO提供了一種通過程序代碼創建和操縱數據庫的機制。最大特點是對microsoft jet數據庫的操作很方便,而且是操作jet數據庫時性能最好的技術接口之一。并且它并不只能用于訪問這種數據庫,事實上,通過dao技術可以訪問從文本文件到大型后臺數據庫等多種數據格式
-
ADO是基于ole db的訪問接口,它是面向對象的ole db技術,繼承了ole d的優點。屬于數據庫訪問的高層接口。
訪問接口 易用性 運行性能 可擴展性 突出特點 能否訪問非關系數據源 技術層次
odbc 差 較高 差 可進行底層控制 否 底層
mfc odbc 好 一般 通用標準,應用廣泛 否 高層
mfc dao 好 較高 一般 訪問jet性能最好 能 高層
ole db 較難 高 好 可訪問非關系db 能 底層
ado 最好 高 好 可訪問非關系,有多種編程接口 能 高層
總結
以上是生活随笔為你收集整理的Python环境下的数据库编程的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: lambda 函数与 Generator
- 下一篇: Python requests 笔记(一