Python论坛  - 讨论区

标题:[python-chinese] 请教如何用ado读取带密码的access数据库?

2006年04月24日 星期一 16:03

jason python.nbfan python.nbfan at gmail.com
Mon Apr 24 16:03:34 HKT 2006

我照着chinaunix上的一个class来使用,没有密码的打开没问题,但是有密码的就不行。
请问是否是open()这里的参数设置不对?还是别的问题



#==========================
#The MIT License
#Emal:ghostwwl at gmail.com
#  edit by Ghostwwl
#==========================
#-*- coding:gb2312 -*-

import win32com.client
class accessdb:
    def __init__(self,dbpath,dbname,dbpw='QingDaoGxxx2002'):
        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.dbqw)
//是否是这里的参数设置不对?self.dbqw是我加的.
        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()
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060424/942b6532/attachment.html

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年04月24日 星期一 16:29

lei zhenlin ray8866 at gmail.com
Mon Apr 24 16:29:41 HKT 2006

在Provider串中加上Password应该可以:

self.db='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s' %
(dbpath+dbname+'.mdb'+';Jet OLEDB:Database Password='+dbpw)

On 4/24/06, jason python.nbfan <python.nbfan at gmail.com> wrote:
> 我照着chinaunix上的一个class来使用,没有密码的打开没问题,但是有密码的就不行。
> 请问是否是open()这里的参数设置不对?还是别的问题
>
>
>
> #==========================
> #The MIT License
> #Emal:ghostwwl at gmail.com
> #  edit by Ghostwwl
> #==========================
> #-*- coding:gb2312 -*-
>
> import win32com.client
> class accessdb:
>     def
> __init__(self,dbpath,dbname,dbpw='QingDaoGxxx2002'):
>         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.dbqw)
>                 //是否是这里的参数设置不对?self.dbqw是我加的.
>         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()
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request at lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>
>


--
----------------------------------------
Lei zhenlin

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年04月24日 星期一 18:31

jason python.nbfan python.nbfan at gmail.com
Mon Apr 24 18:31:34 HKT 2006

多谢,问题已经解决,另外,请问哪里有python adodbapi2.01的中文参考,
最好有例子,我操作access数据库,ADO,和adodbapi那个好一点?谢谢
2006/4/24, lei zhenlin <ray8866 at gmail.com>:
>
> 在Provider串中加上Password应该可以:
>
> self.db='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s' %
> (dbpath+dbname+'.mdb'+';Jet OLEDB:Database Password='+dbpw)
>
> On 4/24/06, jason python.nbfan <python.nbfan at gmail.com> wrote:
> > 我照着chinaunix上的一个class来使用,没有密码的打开没问题,但是有密码的就不行。
> > 请问是否是open()这里的参数设置不对?还是别的问题
> >
> >
> >
> > #==========================
> > #The MIT License
> > #Emal:ghostwwl at gmail.com
> > #  edit by Ghostwwl
> > #==========================
> > #-*- coding:gb2312 -*-
> >
> > import win32com.client
> > class accessdb:
> >     def
> > __init__(self,dbpath,dbname,dbpw='QingDaoGxxx2002'):
> >         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.dbqw)
> >                 //是否是这里的参数设置不对?self.dbqw是我加的.
> >         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()
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese at lists.python.cn
> > Subscribe: send subscribe to
> > python-chinese-request at lists.python.cn
> > Unsubscribe: send unsubscribe to
> > python-chinese-request at lists.python.cn
> > Detail Info:
> > http://python.cn/mailman/listinfo/python-chinese
> >
> >
>
>
> --
> ----------------------------------------
> Lei zhenlin
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to  python-chinese-request at lists.python.cn
> Detail Info: http://python.cn/mailman/listinfo/python-chinese
>
>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: http://lists.exoweb.net/pipermail/python-chinese/attachments/20060424/840ec537/attachment.htm

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

2006年04月27日 星期四 10:55

lei zhenlin ray8866 at gmail.com
Thu Apr 27 10:55:22 HKT 2006

没用过adodbapi


On 4/24/06, jason python.nbfan <python.nbfan at gmail.com> wrote:
>
> 多谢,问题已经解决,另外,请问哪里有python
> adodbapi2.01的中文参考,最好有例子,我操作access数据库,ADO,和adodbapi那个好一点?谢谢
> 2006/4/24, lei zhenlin <ray8866 at gmail.com>:
> > 在Provider串中加上Password应该可以:
> >
> > self.db='Provider=Microsoft.Jet.OLEDB.4.0;Data Source=%s'
> %
> > (dbpath+dbname+'.mdb'+';Jet OLEDB:Database Password='+dbpw)
> >
> > On 4/24/06, jason python.nbfan < python.nbfan at gmail.com> wrote:
> > > 我照着chinaunix上的一个class来使用,没有密码的打开没问题,但是有密码的就不行。
> > > 请问是否是open()这里的参数设置不对?还是别的问题
> > >
> > >
> > >
> > > #==========================
> > > #The MIT License
> > > #Emal: ghostwwl at gmail.com
> > > #  edit by Ghostwwl
> > > #==========================
> > > #-*- coding:gb2312 -*-
> > >
> > > import win32com.client
> > > class accessdb:
> > >     def
> > > __init__(self,dbpath,dbname,dbpw='QingDaoGxxx2002'):
> > >         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.dbqw)
> > >                 //是否是这里的参数设置不对?self.dbqw是我加的.
> > >
> 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()
> > >
> > > _______________________________________________
> > > python-chinese
> > > Post: send python-chinese at lists.python.cn
> > > Subscribe: send subscribe to
> > > python-chinese-request at lists.python.cn
> > > Unsubscribe: send unsubscribe to
> > > python-chinese-request at lists.python.cn
> > > Detail Info:
> > > http://python.cn/mailman/listinfo/python-chinese
> > >
> > >
> >
> >
> > --
> > ----------------------------------------
> > Lei zhenlin
> >
> > _______________________________________________
> > python-chinese
> > Post: send python-chinese at lists.python.cn
> > Subscribe: send subscribe to
> python-chinese-request at lists.python.cn
> > Unsubscribe: send unsubscribe to
> python-chinese-request at lists.python.cn
> > Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
> >
> >
>
>
> _______________________________________________
> python-chinese
> Post: send python-chinese at lists.python.cn
> Subscribe: send subscribe to
> python-chinese-request at lists.python.cn
> Unsubscribe: send unsubscribe to
> python-chinese-request at lists.python.cn
> Detail Info:
> http://python.cn/mailman/listinfo/python-chinese
>
>


--
----------------------------------------
Lei zhenlin

[导入自Mailman归档:http://www.zeuux.org/pipermail/zeuux-python]

如下红色区域有误,请重新填写。

    你的回复:

    请 登录 后回复。还没有在Zeuux哲思注册吗?现在 注册 !

    Zeuux © 2025

    京ICP备05028076号