2004年04月21日 星期三 14:47
¸½¼þÖÐÊÇͨ¹ýADODBAPI»òADO COM·ÃÎÊÊý¾Ý¿âµÄPythonʾÀýÔ´Âë¡£ÔÚWindows XP¼òÌåÖÐÎİæ/MS SQL Server2000 Developer Edition/MS Office 2003¼òÌåÖÐÎİæÉϲâÊÔͨ¹ý£¬¿ÉÒÔÕýÈ·ÏÔʾÖÐÎÄ¡£
Ô´ÂëÖÐʹÓÃÁËMSSQLºÍAccessÖеÄNorthwindʾÀýÊý¾Ý¿â¡£Ê¹ÓÃǰÇëºË¶Ô´úÂëÖеÄÁª½Ó×Ö·û´®ÊÇ·ñÓëǰ»úÆ÷ÉϵĻ·¾³Ïà·û¡£
ÎÒ±àд´úÂëʱʹÓõÄÊÇVIM£¬ÔÚPythonWinµÄIDEÖлáÓÐÂÒÂ룬ÇëʹÓÃIDLE»òVIM/Emacs¡£
µ±È»£¬¸Ã´úÂëÖ»ÄÜÔËÐÐÔÚÖ§³ÖUnicode ±àÂëºÍADOµÄWindows ¼æÈÝÆ½Ì¨ÉÏ¡£
ʹÓÃDBAPI 2.0½Ó¿Ú£¬È·Êµ¿ÉÒÔ¼ò»¯´úÂ룬µ«´ÓADODBAPI 2.0.1µÄÔ´ÂëÀ´¿´£¬DBAPI2.0ÌṩµÄ¹¦Äܲ¢²»¶à£¬Èç¹ûÏëÒªÍêÈ«¿ØÖÆADOÊý¾ÝÔ´£¬×îºÃ»¹ÊÇʹÓÃADOCOM¡£
ADODBAPIʾÀý£ºADODBAPITest.py
ADOʾÀý£ºADOTest.py
-------------- next part --------------
# -*- coding: utf-8 -*-
import win32com.client
import adodbapi
#####################################################
#å®ä¹è½¬ç 彿°ï¼å ä¸ºä¸ææ°æ®åºéè¿ADOè¯»åæ¶ï¼ä¼ç¼ç 为UTF-8ï¼COMçéç¨å符串ç¼ç å³
#为UTF-8ï¼ï¼æä»¥å¨è¿éè¦å
å°å
¶ç¼ç ï¼æè½æ£ç¡®æ¾ç¤ºã
def EncodeValue(Value):
if type(Value)==type(u''):
return Value.encode('UTF-8')
else:
return str(Value)
######################################################
#建ç«èæ¥
#第ä¸ä¸ªèæ¥å符串æ¯MS SQL Serverçï¼åä¸ä¸ªæ¯Accessçï¼è¯·é对å
·ä½çæºå¨ç¯å¢ä¿®æ¹å符串ä¸ç设置ã
#注æï¼ä¸æçAccessä¸çNorthWindæ°æ®åºä¸è¡¨åååæ®µå齿¯ä¸æçã
#conn=adodbapi.connect(r"Provider=SQLOLEDB.1; User ID=sa; Password=gdcn00430; Initial Catalog=NorthWind;Data Source=Localhost")
conn=adodbapi.connect(r"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Microsoft Office\OFFICE11\SAMPLES\NorthWind.mdb")
#å»ºç«æä½æ¸¸æ
thecsr=conn.cursor()
#æå¼äº§å表ï¼å¦æä½¿ç¨çæ¯è±æçNorthWind示ä¾ï¼å¯ä»¥ç¸åºçæå¼Products表
thecsr.execute(u"SELECT * FROM [产å]")
rst = thecsr.fetchall()
for row in rst:
for item in row:
print EncodeValue(item),
print
thecsr.close
conn.close
-------------- next part --------------
# -*- coding: utf-8 -*-
#####################################################
#å®ä¹è½¬ç 彿°ï¼å ä¸ºä¸ææ°æ®åºéè¿ADOè¯»åæ¶ï¼ä¼ç¼ç 为UTF-8ï¼COMçéç¨å符串ç¼ç å³
#为UTF-8ï¼ï¼æä»¥å¨è¿éè¦å
å°å
¶ç¼ç ï¼æè½æ£ç¡®æ¾ç¤ºã
def EncodeValue(Value):
if type(Value)==type(u''):
return Value.encode('UTF-8')
else:
return str(Value)
######################################################
import win32com.client
import adodbapi
#建ç«ADOèæ¥ï¼å¦æéè¦æ£æ¥æ°æ®åºèæ¥æåä¸å¦ï¼æè
éè¦ä½¿ç¨æ åçADOèæ¥ï¼
#å¯ä»¥ä½¿ç¨ä»¥ä¸ç代ç ã
try:
conn=win32com.client.Dispatch("ADODB.Connection")
except:
raise "Connection对象åå§å失败ï¼è¯·æ£æ¥ADOæ¯å¦å®è£
æ£ç¡®ã"
pass
try:
rst=win32com.client.Dispatch("ADODB.Recordset")
except:
raise "Recordset对象åå§å失败ï¼è¯·æ£æ¥ADOæ¯å¦å®è£
æ£ç¡®ã"
pass
try:
cmd=win32com.client.Dispatch("ADODB.Command")
except:
raise "Command对象åå§å失败ï¼è¯·æ£æ¥ADOæ¯å¦å®è£
æ£ç¡®ã"
pass
try:
#第ä¸ä¸ªèæ¥å符串æ¯MS SQL Serverçï¼åä¸ä¸ªæ¯Accessçï¼è¯·é对å
·ä½çæºå¨ç¯å¢ä¿®æ¹å符串ä¸ç设置ã
#注æï¼ä¸æçAccessä¸çNorthWindæ°æ®åºä¸è¡¨åååæ®µå齿¯ä¸æçã
# conn.Open(r"Provider=SQLOLEDB.1; User ID=sa; Password=...; Initial Catalog=NorthWind;Data Source=Localhost")
conn.Open(r"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Microsoft Office\OFFICE11\SAMPLES\NorthWind.mdb")
except:
raise "ä¸è½æå¼æ°æ®èæ¥ï¼è¯·æ£æ¥èæ¥å符串设置æ¯å¦æ£ç¡®ã"
pass
print conn.ConnectionString
#æå¼äº§å表ï¼å¦æä½¿ç¨çæ¯è±æçNorthWind示ä¾ï¼å¯ä»¥ç¸åºçæå¼Products表
CommandText=u"SELECT * FROM [产å]"
rst.Open(CommandText, conn)
rst.MoveFirst()
count = rst.Fields.Count
while not rst.EOF:
row=[EncodeValue(rst.Fields.Item(i).Value) for i in range(count)]
for item in row:
print item,
print
rst.MoveNext()
rst.Close()
conn.Close()
-------------- next part --------------
A non-text attachment was scrubbed...
Name: liux.vcf
Type: text/x-vcard
Size: 227 bytes
Desc: Card for <liux at gdcn.com>
Url : http://lists.exoweb.net/pipermail/python-chinese/attachments/20040421/17c86e9f/liux.vcf
2004年04月21日 星期三 16:23
Hollo liux: 咦咦咦!? 很经典的例程是也乎! 收藏! /******** [2004-04-21]16:23:16 ; you wrote: liux at gdcn.com> 附件中是通过ADODBAPI或ADO liux at gdcn.com> COM访问数据库的Python示例源码。在Windows XP简体中文版/MS SQL liux at gdcn.com> Server2000 Developer Edition/MS Office liux at gdcn.com> 2003简体中文版上测试通过,可以正确显示中文。 liux at gdcn.com> 源码中使用了MSSQL和Access中的Northwind示例数据库。使用前请核对代码中的联接字符串是否与前机器上的环境相符。 liux at gdcn.com> 我编写代码时使用的是VIM,在PythonWin的IDE中会有乱码,请使用IDLE或VIM/Emacs。 liux at gdcn.com> 当然,该代码只能运行在支持Unicode liux at gdcn.com> 编码和ADO的Windows 兼容平台上。 liux at gdcn.com> 使用DBAPI liux at gdcn.com> 2.0接口,确实可以简化代码,但从ADODBAPI liux at gdcn.com> 2.0.1的源码来看,DBAPI2.0提供的功能并不多,如果想要完全控制ADO数据源,最好还是使用ADOCOM。 liux at gdcn.com> ADODBAPI示例:ADODBAPITest.py liux at gdcn.com> ADO示例:ADOTest.py ********************************************/ -- Free as in Freedom Zoom.Quiet #=========================================# ]Time is unimportant, only life important![ #=========================================# sender is the Bat!2.02 CE
2004年04月22日 星期四 09:57
python-chinese,您好! 请问yield的用法!谢谢! 致 礼! 千里马肝 tlovexyj at 21cn.com 2004-04-21
2004年04月22日 星期四 12:40
呵呵,今天怎么大家都没发邮件啦。出个小题目吧,有字符串 s="%C6%E6%D5%E4%D2%EC%B1%A6" 怎样由它得到列表 l=["%C6","%E6","%D5","%E4","%D2","%EC","%B1","%A6"] 解法很多,要最简单的。
Zeuux © 2025
京ICP备05028076号