如果是把 Excel 作為超小型數據庫,我有示例代碼:
因為一些同事完全不懂數據庫,但是會用基本的 Excel 文件。
程序調用 win32com 修改Excel中的記錄字段標記。用作最基本的數據庫。
下面的代碼演示了讀取、修改Excel文件中[Sheet1]表中的記錄。表包含"號碼"、"狀態"兩個中文字段。用來記錄手機號碼的狀態的。
注意表名一定要用[]方括號括起來。
code:
#!/usr/bin/python
# -*- coding: gbk -*-
import os.path
import win32com.client
import string
class ExcelNumList:
def __init__(self, filename = None):
self.conn = win32com.client.Dispatch(r'ADODB.Connection')
self.opened = False
return None
def open(self, filename):
del self.conn
self.conn = win32com.client.Dispatch(r'ADODB.Connection')
self.opened = False
# print dsn
if os.path.exists(filename):
dsn = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;' \
'Extended Properties=Excel 8.0;' \
'Persist Security Info=False;' \
'Data Source=%s;'%filename
#print dsn
try:
self.conn.Open(dsn)
self.opened = True
except:
self.opened = False
else:
return None
def close(self):
if self.opened:
try:
self.conn.Close()
except:
pass
#self.conn = None
def getNumList(self):
list = []
rs = win32com.client.Dispatch(r'ADODB.Recordset')
try:
rs.Open('SELECT * FROM [Sheet1$] WHERE 狀態 IS NULL', self.conn, 1, 3)
except:
return False
while not rs.EOF:
num = "%s"%int(rs.Fields["號碼"].Value)
list.append(num)
rs.MoveNext()
rs.Close()
del rs
return list
def updateNum(self, number, status=0):
sql = "UPDATE [Sheet1$] SET 狀態=%s WHERE 號碼=%s"%(status, number)
self.conn.Execute(sql)