2006年02月15日 星期三 12:30
呵呵,google Desktop 的小爬虫 想入门python的可以看看 http://goog-kongulo.sourceforge.net/ -- I'm the one, powered by nEO
2006年02月15日 星期三 15:09
今天用Python作一些ADO方面的操作。 发现有这样的一个问题。ADO RecordSet 的一些属性值没法正确得到, 不知道是不是我有哪写得不正确。请指教。 Code 如下 import os,sys from win32com.client import Dispatch strMDB = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=%s" % "d:\\2.mdb" Conn = Dispatch("ADODB.Connection") Conn.ConnectionString = strMDB Conn.Open() # NetAE表里是有数据的 strsql = "seleect * from NetAE" ors = Dispatch("ADODB.Recordset") (ors,result) = Conn.Execute(strsql) print ors.RecordCount # 结果显示为-1 如果用这样的表述就能得到正确的结果 icount =0 while not ors.EOF: icount = icount + 1 ors.MoveNext() print icount 但如果我用VBScript 来写就不是这样的结果 Const adOpenStatic = 3 Const adLockOptimistic = 3 Set objConnection = CreateObject("ADODB.Connection") Set objRecordSet = CreateObject("ADODB.Recordset") strCnnMDB = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & "d:\\2.mdb" objConnection.ConnectionString = strCnnMDB objConnection.Open objRecordSet.Open "SELECT * FROM netae", _ objConnection, adOpenStatic, adLockOptimistic MsgBox objRecordSet.RecordCount 输出结果就变为 54 这是什么原故呢。 难不成这是Python 2.3的Bug??:( ============================== -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060215/2f31a685/attachment.htm
2006年02月15日 星期三 15:28
但是奇怪的是如果我用下面的方法就可以正确得到 ors .Open(strsql,Conn,1,1) print ors.RecordCount 就可以得到正确的值 andy.bu at kodak.com Sent by: python-chinese-bounces at lists.python.cn 2006-02-15 15:09 Please respond to python-chinese at lists.python.cn To python-chinese at lists.python.cn cc Subject [python-chinese] Python2.3 和ADO 今天用Python作一些ADO方面的操作。 发现有这样的一个问题。ADO RecordSet 的一些属性值没法正确得到, 不知道是不是我有哪写得不正确。请指教。 Code 如下 import os,sys from win32com.client import Dispatch strMDB = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=%s" % "d:\\2.mdb" Conn = Dispatch("ADODB.Connection") Conn.ConnectionString = strMDB Conn.Open() # NetAE表里是有数据的 strsql = "seleect * from NetAE" ors = Dispatch("ADODB.Recordset") (ors,result) = Conn.Execute(strsql) print ors.RecordCount # 结果显示为-1 如果用这样的表述就能得到正确的结果 icount =0 while not ors.EOF: icount = icount + 1 ors.MoveNext() print icount 但如果我用VBScript 来写就不是这样的结果 Const adOpenStatic = 3 Const adLockOptimistic = 3 Set objConnection = CreateObject("ADODB.Connection") Set objRecordSet = CreateObject("ADODB.Recordset") strCnnMDB = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=" & "d:\\2.mdb" objConnection.ConnectionString = strCnnMDB objConnection.Open objRecordSet.Open "SELECT * FROM netae", _ objConnection, adOpenStatic, adLockOptimistic MsgBox objRecordSet.RecordCount 输出结果就变为 54 这是什么原故呢。 难不成这是Python 2.3的Bug??:( ============================== _______________________________________________ python-chinese Post: send python-chinese at lists.python.cn Subscribe: send subscribe to python-chinese-request at lists.python.cn Unsubscribe: send unsubscribe to python-chinese-request at lists.python.cn Detail Info: http://python.cn/mailman/listinfo/python-chinese -------------- next part -------------- An HTML attachment was scrubbed... URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060215/08346252/attachment.html
2006年02月15日 星期三 15:50
在 2006-2-15 15:09:34,andy.bu at kodak.com 写道: > 今天用Python作一些ADO方面的操作。 > 发现有这样的一个问题。ADO RecordSet 的一些属性值没法正确得到, > 不知道是不是我有哪写得不正确。请指教。 > > Code 如下 > > import os,sys > from win32com.client import Dispatch > > strMDB = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security > Info=False;Data Source=%s" % "d:\\2.mdb" > Conn = Dispatch("ADODB.Connection") > Conn.ConnectionString = strMDB > Conn.Open() > > # NetAE表里是有数据的 > strsql = "seleect * from NetAE" > ors = Dispatch("ADODB.Recordset") > (ors,result) = Conn.Execute(strsql) > print ors.RecordCount # 结果显示为-1 > > > 如果用这样的表述就能得到正确的结果 > icount =0 > while not ors.EOF: > icount = icount + 1 > ors.MoveNext() > > print icount > > 但如果我用VBScript 来写就不是这样的结果 > > Const adOpenStatic = 3 > Const adLockOptimistic = 3 > > Set objConnection = CreateObject("ADODB.Connection") > Set objRecordSet = CreateObject("ADODB.Recordset") > > strCnnMDB = "Provider=Microsoft.Jet.OLEDB.4.0;Persist Security > Info=False;Data Source=" & "d:\\2.mdb" > objConnection.ConnectionString = strCnnMDB > objConnection.Open > > objRecordSet.Open "SELECT * FROM netae", _ > objConnection, adOpenStatic, adLockOptimistic > MsgBox objRecordSet.RecordCount > > 输出结果就变为 54 > > 这是什么原故呢。 > > 难不成这是Python 2.3的Bug??:( > > > > ============================== 你这是客户端游标和服务端游标的问题。 可以在创建conn后用 conn.CursorLocation = 3 来设置为客户端游标。 然后你再试试。 另外,python下使用ado可以用adodbapi,它把com的底层操作都封装好了,用dbapi2.0接口操作数据库。 http://sourceforge.net/projects/adodbapi -- 张骏 <zhangj at foreseen-info.com> 敏捷来自Python 简单源于我们 丰元信信息技术有限公司
Zeuux © 2025
京ICP备05028076号