又一访问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')对于某些字符也会出错.

转载于:https://my.oschina.net/u/201886/blog/64686

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值