Python论坛  - 讨论区

标题:[python-chinese] 介绍一个web爬虫

2006年02月15日 星期三 12:30

nEO (a.k.a. gentoo.cn) gentoo.cn at gmail.com
Wed Feb 15 12:30:17 HKT 2006

呵呵,google Desktop 的小爬虫
想入门python的可以看看

http://goog-kongulo.sourceforge.net/


--
I'm the one, powered by nEO

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年02月15日 星期三 15:09

andy.bu at kodak.com andy.bu at kodak.com
Wed Feb 15 15:09:34 HKT 2006

今天用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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年02月15日 星期三 15:28

andy.bu at kodak.com andy.bu at kodak.com
Wed Feb 15 15:28:14 HKT 2006

但是奇怪的是如果我用下面的方法就可以正确得到
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

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年02月15日 星期三 15:50

张骏 zhangj at foreseen-info.com
Wed Feb 15 15:50:47 HKT 2006

在 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
简单源于我们
丰元信信息技术有限公司



[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号