您的位置:首页 > 编程语言 > Python开发

Python & ADO

2012-11-08 20:37 183 查看
(作者:玛瑙河,转载请注明作者或出处,

) 

在Windows系统中,用Python脚本通过ADO来操作数据库是相当有效率的,你犯不着去找各种各样的数据库模块,因为ADO已经为你准备好了一切。有时候一个不太复杂却用简单的SQL查询不能解决的问题,用Python脚本就能很方便的解决,犯不着打开某些强大的IDE并新建一个工程(杀鸡焉用牛刀!),你所需要的工具,仅notepad或其它简单的文本编辑器就足够了。要使用ADO,必须安装pywin32模块。如果您用的是ActivePython,那么系统中已经安装了该模块,否则请先下载并安装pywin32。下面是通过ADO操作MS
SQL Server数据库的例子:

1

#-*- coding: utf-8 -*-

2

#以下的例子中假设classmates数据库中有一个名为classmate的表,该表有三个字段:name(必填字段)、Email、address,

3

import win32com.client

4


5

DSN= r"Provider=SQLOLEDB;UID=xx;PWD=yy@cc;Database=classmates;Server=localhost"

6

#Select的例子

7

Recordset = win32com.client.Dispatch(r"ADODB.Recordset")

8

Recordset.ActiveConnection = DSN

9

Recordset.Source = r"SELECT name, Email, address FROM dbo.classmate"

10

Recordset.CursorType = 0

11

Recordset.CursorLocation = 2

12

Recordset.LockType = 1

13

Recordset.Open()

14

numRows = 0

15

while not Recordset.EOF:

16

print r'Name:',Recordset.Fields.Item("name").Value.encode('gbk')

17

if Recordset.Fields.Item("Email").Value != None:

18

print r' EMail:',Recordset.Fields.Item("Email").Value.encode('gbk')

19

if Recordset.Fields.Item("address").Value != None :

20

print r' Address:',Recordset.Fields.Item("address").Value.encode('gbk')

21

numRows+=1

22

Recordset.MoveNext()

23

print 'Total Rows:',numRows

24


25

#Insert的例子

26

CommandInsert = win32com.client.Dispatch(r"ADODB.Command")

27

CommandInsert.ActiveConnection = DSN

28

CommandInsert.CommandText = r"INSERT INTO dbo.classmate (name, Email, address) VALUES ('xx','abc@xyz.com','ABC Street' ) "

29

CommandInsert.CommandType = 1

30

CommandInsert.CommandTimeout = 0

31

CommandInsert.Prepared = true

32

CommandInsert.Execute()

33


34

#Update的例子

35

CommandUpdate = win32com.client.Dispatch(r"ADODB.Command")

36

CommandUpdate.ActiveConnection = DSN

37

CommandUpdate.CommandText = r"UPDATE dbo.classmate SET Email='xx@yy.com', address='XX Street' WHERE name='xx' "

38

CommandUpdate.CommandType = 1

39

CommandUpdate.CommandTimeout = 0

40

CommandUpdate.Prepared = true

41

CommandUpdate.Execute()

42


43

#Delete的例子

44

CommandDelete = win32com.client.Dispatch(r"ADODB.Command")

45

CommandDelete.ActiveConnection = DSN

46

CommandDelete.CommandText = r"DELETE FROM dbo.classmate WHERE name = 'xx'"

47

CommandDelete.CommandType = 1

48

CommandDelete.CommandTimeout = 0

49

CommandDelete.Prepared = true

50

CommandDelete.Execute()

51


如果您需要操作Access或其他数据库,只需修改DSN和相应的SQL语句即可,比如:DSN=r'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=D:\Test.mdb;'

参考:
http://www.ecp.cc/pyado.html
http://msdn.microsoft.com/library/default.asp?url=/library/en-us/ado270/htm/mdmscadoobjmod.asp
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: