又一访问access

遇到一个task, 要把.mbd格式的数据库导出。可惜我的机器没有比较熟悉的VC. 想down vs6也没有合适的, .net又太大. 突然想到前些日子装了python, 却一直没用过,

python的粉丝到处散布"用我python, 无所不能"的传言, 何不拿它来试试看?
首先,baidu一下"python 访问access" 结果还不少. 经过尝试,觉得下面的方法最简单.

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

import sys

import os

import win32com.client

conn = win32com.client.Dispatch(r'ADODB.Connection')

DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA SOURCE=d:\\db1.mdb;' 

conn.Open(DSN) 

rs = win32com.client.Dispatch(r'ADODB.Recordset')

rs_name = 'table1' 

rs.Open('[' + rs_name + ']', conn, 1,2) #此函数中参数1,2 是什么值怎么设,我还不知道,还在试。
a=0

while a < rs.RecordCount :

if a % 5000 == 0 :

dir_no = a / 5000

dirpath = "d:\\tmp%d" % (dir_no)

os.mkdir(dirpath)

fname = "%s\\rec%d" % (dirpath, a)

title = rs.Fields.Item(1).Value

str1 = "<html><head><title>%s</title></head><body>\n" % (title)

output=open(fname, 'wb')

output.write(str1.encode('utf-8'))

output.close()
if a % 1000 == 0 :

print "%d\n" % a

#print "%d %d\t%s" % (a,num,title)

rs.MoveNext();

a = a+1



conn.Close();
需要注意的问题是: 输出中文到文件一定要用.encode('utf-8')把它转化成utf-8, 因为:

系统缺省的编码是ascii, 遇到汉字会出错. .encode('gbk')对于某些字符也会出错.

你可能感兴趣的:(python,Access)