写了个遍历access的mdb的通用模块模糊查询一直搞不定
就放弃模糊查询了 我觉得不够完善 大家帮忙着改
#==========================
#The MIT License
#Emal:ghostwwl@gmail.com
# edit by Ghostwwl
#==========================
#-*- coding:unicode -*-
import win32com.client
class accessdb:
def __init__(self,dbpath,dbname,dbpw='admin'):
self.dbpath=dbpath
self.dbname=dbname
self.dbqw=dbpw
self.db='Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=%s' % (dbpath+dbname+'.mdb')
def open(self,sql):
self.conn=win32com.client.Dispatch('ADODB.Connection')
self.conn.Open(self.db)
self.rs=win32com.client.Dispatch('ADODB.Recordset')
self.sql=sql
self.rs.Open('['+self.sql+']',self.conn,1,3)
self.rs.MoveFirst()
def printrcd(self):
count=1
record={}
while not self.rs.EOF:
fields=''
recd=''
for i in range(self.rs.Fields.count):
record[self.rs.Fields(i).Name]=self.rs.Fields.Item(i).Value
#for m in flds.keys():fields=fields+m+'|'
fields = '|'.join(record.keys()) #感谢limodou提供的方法
for n in record.values():recd=recd+unicode(n)+'|' #这个要unicode转换所以没用上面方法
print "===================================="
print fields
print recd
print "第%s条记录:" % (count)
count+=1
self.rs.MoveNext()
self.conn.Close()
def main():
print """
此程序需要win32com模块
输入dbpath示例:c:/ or c:\\t
输入dbname示例:mark
输入dbtable示例:a
在输入dbname时不需要加.mdb直接输入数据库名
"""
pth=raw_input("Enter the dbpath:")
nam=raw_input("Enter the dbname:")
#cfield=raw_input("模糊查询的条件字段:")
#cval=raw_input("条件字段值:") 模糊查询 一直有问题 还是以后再改
mysql="select * from %s " %(raw_input("Enter the table name:"))
db=accessdb(pth,nam)
db.open(mysql)
db.printrcd()
if __name__=="__main__":
main()
运行结果如下:
此程序需要win32com模块
输入dbpath示例:c:/ or c:\\
输入dbname示例:mark
输入dbtable示例:a
在输入dbname时不需要加.mdb直接输入数据库名
Enter the dbpath:f:/
Enter the dbname:mark
Enter the table name:a1
====================================
课程代号|准考证号|课程名称|缺考|姓名|成绩
0248|014403200462|国际金融法||周涛|60|
第1条记录:
====================================
课程代号|准考证号|课程名称|缺考|姓名|成绩
0228|014403200465|环境与资源保护法学||钱铎怀|53|
第2条记录:
[ 本帖最后由 ghostwwl 于 2006-2-15 23:18 编辑 ]
ghostwwl 回复于:2006-02-13 16:54:27
hoxide: 呵呵 access的访问有接口吗? 好像有啊
ghostwwl: 我用的ado阿
hoxide: 恩~~ado也有接口啊 python的接口
ghostwwl: 恩 有时间一定能够要把 模糊查询写出来 那样
ghostwwl: 可以衍生出真正的应用
hoxide: 是啊 http://cheeseshop.python.org/pypi/adodbapi/2.0
ghostwwl: 估计上学了 就没多少时间了
hoxide: http://cheeseshop.python.org/pypi/auth-modules/1.1
ghostwwl: 不错 呵呵
hoxide: 恩
python 有db接口的标准
hoxide: PDO 2.0 呵呵
hoxide: 不管什么数据库, py的接口都是一样的 只要改个连接时的字符串
ghostwwl: 恩 蛮好 呵呵 以后就选他了 免费又实惠
晕PDO2.0出了
[ 本帖最后由 ghostwwl 于 2006-2-14 11:06 编辑 ]
ghostwwl 回复于:2006-02-14 10:59:07
偶发现 这个执行效率 牛低
有空的话 把它改成多线程 然后实现模糊查询
数据引擎 换PDO试试看
ghostwwl 回复于:2006-02-15 23:10:56
参数查询已经实现了
基本修改后可以用于特定的应用
但是模糊查询还没有实现
access觉得不怎么好,还是用其他的数据库吧!
[ 本帖最后由 ghostwwl 于 2006-4-2 21:26 编辑 ]
|