又一訪問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')對於某些字符也會出錯.
相關文章
相關標籤/搜索