python遍历access的通用类

python遍历access的通用类

写了个遍历access的mdb的通用模块模糊查询一直搞不定
就放弃模糊查询了 我觉得不够完善 大家帮忙着改

[Copy to clipboard] [ - ]
CODE:
#==========================
#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条记录:

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出了

偶发现 这个执行效率 牛低
有空的话 把它改成多线程 然后实现模糊查询
数据引擎 换PDO试试看
参数查询已经实现了
基本修改后可以用于特定的应用
但是模糊查询还没有实现

access觉得不怎么好,还是用其他的数据库吧!