在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()
楼主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()