Python學習筆記 ADO訪問資料庫

2021-07-03 20:05:50 字數 3093 閱讀 4820

因為工作中用到ado訪問工業資料庫,在這做乙個記錄。

ado(activex data objects,

activex資料物件

)是microsoft提出的應用程式介面(

api)用以實現訪問關係或非關聯式資料庫中的資料。

ado的五個基本物件型別

connection object連線物件

連線物件經常用於管理乙個資料來源連線,你可以通過指定資料庫驅動名、資料庫伺服器位址、使用者名稱、密碼及其它的引數告訴它如何去連線乙個資料庫。所有其它的ado物件都是建立在連線物件的基礎之上的。而連線物件則有乙個不需要其它ado物件的方法。我們將詳細討論這個方法,但不會頻繁的去使用它,這些我將在以後進行解釋。 

recordset object記錄集物件

記錄集物件是乙個資料庫查詢或儲存過程執行結果的集合。記錄集物件可以同時訪問乙個包含多個字段集合的單獨行,這個字段集合用於表述這一行中的多個對應列。記錄集物件提供了一些方法讓我們可以自由的訪問紀錄集中的上一行、下一行、第一行、最後一行。有時在處理象sql server之類資料庫時,它的儲存過程可以同時返回多個具有不同列和列型別集合的記錄集時,記錄集物件也可以在每個乙個結果集合中進行跳轉。記錄集也可以執行自己的查詢/儲存過程(?在與乙個連線物件進行關聯之後?)並獲得返回的結果。但是我們不會重點去討論這個,而通常是通過將命令物件(連線物件)的執行結果賦給乙個記錄集物件,並運用記錄集去處理結果中的每一行。 

field object欄位物件

字段物件用於描述每個記錄行中的每一列。因為每乙個sql查詢都可能返回多個不同列,因此乙個記錄集物件中也包含多個字段物件。第個字段物件都包含字段值、字段型別(整數型、字元型、浮點型、貨幣型等等)、字段最大長度、精度等等。在本指南中我們經常將處理記錄集物件中的字段。 

command object命令物件

命名物件是的依附於連線物件乙個很代表性的物件,通過乙個連線去執行查詢、儲存過程或訪問**。如果有結果返回,那就將是乙個包含結果的記錄集物件。我們在這個指南中的很多範例,都採用了這種方式。乙個主要的特徵是命令物件有為查詢或儲存過程提供不同引數的能力。在後面的章節中我們將看到這是乙個很好用的功能,要比通過連線或記錄集物件來執行查詢要好的多。 

parameter object引數物件

引數物件是命令物件的乙個重要夥伴,經常用於象命令物件提供引數。

命令物件可以有不同的引數物件。儘管新手們很少使用它,但我們要明白使用引數物件將給我們提供不少的方便和益處。在後面的章節中我們將逐步討論使用引數物件的原因和優點。

以下是一段sql server資料庫增刪改查例項,資料庫名mydb,表abc,兩個欄位id和name。

#-*- coding: utf-8 -*-

import win32com.client

dsn = r"provider=sqloledb;uid=sa;pwd=123;database=mydb;server=localhost"

#insert

insert = win32com.client.dispatch(r"adodb.command")

insert.activeconnection = dsn

insert.commandtext = r"insert into dbo.abc (id,name) values ('22','abc') "

insert.commandtype = 1

insert.commandtimeout = 0

insert.prepared = true

insert.execute()

#delete

delete = win32com.client.dispatch(r"adodb.command")

delete.activeconnection = dsn

delete.commandtext = r"delete from dbo.abc where id = '11'"

delete.commandtype = 1

delete.commandtimeout = 0

delete.prepared = true

delete.execute()

#update

update = win32com.client.dispatch(r"adodb.command")

update.activeconnection = dsn

update.commandtext = r"update dbo.abc set name='aaa' where id='22' "

update.commandtype = 1

update.commandtimeout = 0

update.prepared = true

update.execute()

#select

rs = win32com.client.dispatch(r"adodb.recordset")

rs.activeconnection = dsn

rs.source = r"select id, name from dbo.abc"

rs.cursortype = 0

rs.cursorlocation = 2

rs.locktype = 1

rs.open()

numrows = 0

while not rs.eof:

print r'id:',rs.fields.item("id").value.encode('gbk')

if rs.fields.item("name").value != none:

print r' name:',rs.fields.item("name").value.encode('gbk')

numrows+=1

rs.movenext()

print 'total rows:',numrows

關於各個物件的更多具體屬性和引數可以看這個部落格ado and python

ADO學習筆記 Connection物件

要使用vc來做軟體,需要掌握的知識真是太多了,從 學起呢,就總自己最感興趣,最有用處的開始吧。平常工作中,經常要於資料庫打交道,所以學習使用ado來運算元據庫是個不錯的選擇。雖然對mysql比較的感興趣,但是對於資料庫的操作只有使用mysql的api來操作,對於工作中用到的不多,而ado適用的範圍就...

使用ADO訪問ACCESS

coding utf 8 file ado.py import win32com.client 匯入win32com.client adocon win32com.client.dispatch adodb.connection 建立連線物件 adocon.open podbc 連線到資料來源 ad...

ADO 訪問資料庫

using system using system.collections.generic using system.componentmodel using system.data using system.drawing using system.text using system.window...