ZT:在Python中用ADO来访问数据库


                                在Python中用ADO来访问数据库
楼主anux(阿牛克斯)2005-04-14 09:05:52 在  其他开发语言 / 脚本语言(Perl ,Python) 提问
今天帮一个同事的小忙,处理一个客户的mdb数据库资料,以前我都是直接在access里面写vb script搞定的。这次来了神,想牛刀小试一下,拿出了
python
,和大名大名鼎鼎的
ADODB for Python

谁知在打开数据库时一直报错,看文档,看例子,就是搞不定。ADODB只能用ODBC的方式连mdb,不能用OLE DB。试了两个小时,还是没有进展,以往这种小事情一般十几分种就能搞定的。
后来实然想到以前看过的一个资料,用win32All包里面的Com来访问ADO对象,马上在硬盘上找了一下,果真找到了。网上的址:
ADO Programming with Python Tutorial
。简单的看了一下,马上一试,真是灵,搞定。然后处理数据库,真是爽啊。(不要忘记了,这篇文章的作者自己定义了一些ADO里面的常量标识,都在
[color="#00ff00"]adoconstants.py
里面,把它放在python的路径里面或者就放在你代码相同目录)
我把简单测试的代码写在这里。具体的其它的方法和属性在网上看那篇文章就行了。
from win32com.client import Dispatch
from adoconstants import *
def main():
    oConn = Dispatch('ADODB.Connection')
    oConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=G:\\python\\MDB\\bill.mdb;User Id=Admin;Password=;"
    oConn.Open()
    if oConn.State == adStateOpen:
        print "We've connected to the database."
        oRS = Dispatch('ADODB.RecordSet')
        oRS.ActiveConnection = oConn
        oRS.Open("bill")
        #oRS.Open("SELECT zip, city, state FROM zipcode ORDER BY id",oConn)
        #while not oRS.EOF:
        i=0
        while i<20:
            print i,oRS.Fields.Item(0), oRS.Fields(1), oRS.Fields(2).Value, oRS.Fields.Item(0).Value
            oRS.MoveNext()
            i = i + 1
        oRS.Close()
        oRS = None
    else:
        print "We failed to connect to the database."
    if oConn.State == adStateOpen:
        oConn.Close()
        oConn = None   
if __name__ == '__main__':
    main()