免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 5998 | 回复: 3
打印 上一主题 下一主题

python遍历access的通用类 [复制链接]

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015亚冠之广州恒大
日期:2015-07-22 17:20:15
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-02-13 16:52 |只看该作者 |倒序浏览
写了个遍历access的mdb的通用模块模糊查询一直搞不定
就放弃模糊查询了 我觉得不够完善 大家帮忙着改


  1. #==========================
  2. #The MIT License
  3. #Emal:ghostwwl@gmail.com
  4. #  edit by Ghostwwl
  5. #==========================
  6. #-*- coding:unicode -*-

  7. import win32com.client
  8. class accessdb:
  9.     def __init__(self,dbpath,dbname,dbpw='admin'):
  10.         self.dbpath=dbpath
  11.         self.dbname=dbname
  12.         self.dbqw=dbpw
  13.         self.db='Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Data Source=%s' % (dbpath+dbname+'.mdb')

  14.     def open(self,sql):
  15.         self.conn=win32com.client.Dispatch('ADODB.Connection')
  16.         self.conn.Open(self.db)
  17.         self.rs=win32com.client.Dispatch('ADODB.Recordset')
  18.         self.sql=sql
  19.         self.rs.Open('['+self.sql+']',self.conn,1,3)
  20.         self.rs.MoveFirst()

  21.     def printrcd(self):
  22.         count=1
  23.         record={}
  24.         while not self.rs.EOF:
  25.             fields=''
  26.             recd=''     
  27.             for i in range(self.rs.Fields.count):
  28.                 record[self.rs.Fields(i).Name]=self.rs.Fields.Item(i).Value
  29.             #for m in flds.keys():fields=fields+m+'|'   
  30.             fields = '|'.join(record.keys())           #感谢limodou提供的方法
  31.             for n in record.values():recd=recd+unicode(n)+'|' #这个要unicode转换所以没用上面方法
  32.             print "===================================="
  33.             print fields         
  34.             print recd
  35.             print "第%s条记录:" % (count)   
  36.             count+=1
  37.             self.rs.MoveNext()
  38.         self.conn.Close()

  39. def main():
  40.     print """
  41. 此程序需要win32com模块
  42. 输入dbpath示例:c:/ or c:\\t
  43. 输入dbname示例:mark
  44. 输入dbtable示例:a      
  45. 在输入dbname时不需要加.mdb直接输入数据库名           
  46. """
  47.     pth=raw_input("Enter the dbpath:")
  48.     nam=raw_input("Enter the dbname:")
  49.     #cfield=raw_input("模糊查询的条件字段:")
  50.     #cval=raw_input("条件字段值:")   模糊查询 一直有问题 还是以后再改
  51.     mysql="select * from %s " %(raw_input("Enter the table name:"))
  52.     db=accessdb(pth,nam)
  53.     db.open(mysql)
  54.     db.printrcd()
  55.    
  56. if __name__=="__main__":
  57.     main()
  58.             
  59.             
复制代码




运行结果如下:


此程序需要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 编辑 ]

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015亚冠之广州恒大
日期:2015-07-22 17:20:15
2 [报告]
发表于 2006-02-13 16:54 |只看该作者
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 编辑 ]

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015亚冠之广州恒大
日期:2015-07-22 17:20:15
3 [报告]
发表于 2006-02-14 10:59 |只看该作者
偶发现 这个执行效率 牛低
有空的话 把它改成多线程 然后实现模糊查询
数据引擎 换PDO试试看

论坛徽章:
4
CU大牛徽章
日期:2013-03-13 15:29:07CU大牛徽章
日期:2013-03-13 15:29:49CU大牛徽章
日期:2013-03-13 15:30:192015亚冠之广州恒大
日期:2015-07-22 17:20:15
4 [报告]
发表于 2006-02-15 23:10 |只看该作者
参数查询已经实现了
基本修改后可以用于特定的应用
但是模糊查询还没有实现

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

[ 本帖最后由 ghostwwl 于 2006-4-2 21:26 编辑 ]
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP