Python论坛  - 讨论区

标题:[python-chinese] about access

2004年01月15日 星期四 16:11

wide 288 wide288 at yahoo.com.cn
Thu Jan 15 16:11:01 HKT 2004

我的数据库文件的确用了中文的字段名,一会儿我就改成英文的再试一试。

 --- 刘鑫 <lx1978 at 21cn.com> 的正文:> wide 288:
> 	您好!
>    
>
我怀疑是你的数据库中有中文的字段名,所以导致以上错误,具体验证要等到晚上了。
> 	
> 
> ======= 2004-01-15 14:29:35 您在来信中写道:=======
> 
> >我参考
> >>>> import win32com.client
> >
> >>>> conn =
> >win32com.client.Dispatch(r'ADODB.Connection')
> >
> >>>> DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA
> >SOURCE=C:/MyDB.mdb;'
> >
> >>>> conn.Open(DSN) 
> >
> >经过上面的设置之后,就可以直接连接数据库了:
> >
> >首要的任务是打开一个数据集/数据表 
> >
> >>>> rs =
> win32com.client.Dispatch(r'ADODB.Recordset')
> >
> >>>> rs_name = 'MyRecordset'
> >
> >>>> rs.Open('[' + rs_name + ']', conn, 1, 3)
> >
> >        
> >
> >[1和3是常数.代表adOpenKeyset
>
>和adLockOptimistic.我用它作为默认值,如果你的情况不同的话,或许你应该改变一下.进一步的话题请参考ADO相关材料.]
> >
> >
> >打开数据表后,你可以检查域名和字段名等等 
> >
> >>>> flds_dict = {}
> >
> >>>> for x in range(rs.Fields.Count):
> >
> > ...     flds_dict[x] = rs.Fields.Item(x).Name
> >
> >        
> >
> >字段类型和长度被这样返回A : 
> >
> >>>> print rs.Fields.Item(1).Type
> >
> >202 # 202 is a text field
> >
> >>>> print rs.Fields.Item(1).DefinedSize
> >
> >50  # 50 Characters
> >
> >        
> >
> >现在开始对数据集进行操作.可以使用SQL语句INSERT
> >INTO或者AddNew() 和Update() 
> >
> >>>> rs.AddNew()
> >
> >>>> rs.Fields.Item(1).Value = 'data'
> >
> >>>> rs.Update()
> >
> >这些值也能够被返回:
> >
> >>>> x = rs.Fields.Item(1).Value
> >
> >>>> print x
> >
> >'data'
> >
> >        
> >
>
>因此如果你想增加一条新的记录,不必查看数据库就知道什么number
> >和AutoNumber 字段已经产生了
> >
> >>>> rs.AddNew()
> >
> >>>> x =
> rs.Fields.Item('Auto_Number_Field_Name').Value
> > 
> >
> ># x contains the AutoNumber
> >
> >>>> rs.Fields.Item('Field_Name').Value = 'data'
> >
> >>>> rs.Update()
> >
> >使用ADO,你也能得到数据库里面所有表名的列表: 
> >
> >        >>> oCat =
> >win32com.client.Dispatch(r'ADOX.Catalog')
> >
> >        >>> oCat.ActiveConnection = conn
> >
> >        >>> oTab = oCat.Tables
> >
> >        >>> for x in oTab:
> >
> >        ...     if x.Type == 'TABLE':
> >
> >        ...         print x.Name
> >
> >        
> >
> >关闭连接.
> 注意这里C是大写,然而关闭文件连接是小写的c.
> >
> >    >>> conn.Close()
> >------------------------------------------
> >以上内容没有成功的连接我的mdb 文件。
> >而我编辑成.py 文件后也没有成功。代码如下:
> >---------------------------------
> >
> >import win32com.client
> >conn =
> win32com.client.Dispatch(r'ADODB.Connection')
> >DSN = 'PROVIDER=Microsoft.Jet.OLEDB.4.0;DATA
> >SOURCE=C:/MyDB.mdb;'
> >conn.Open(DSN) 
> >rs = win32com.client.Dispatch(r'ADODB.Recordset')
> >rs_name =
> 'MyRecordset'#不知道这是表名,还是字段名,
> >rs.Open('[' + rs_name + ']', conn, 1,
> >3)#这里的1和3到底表示什么意思啊。
> >flds_dict = {}
> >for x in range(rs.Fields.Count):
> >    flds_dict[x] = rs.Fields.Item(x).Name
> >#字段类型和长度被这样返回
> >#print rs.Fields.Item(1).Type
> >#print rs.Fields.Item(1).DefinedSize
> >x = rs.Fields.Item(1).Value
> >print x
> >conn.Close()
> >---------------------
> >上面就是我找到的代码,不明白问题出在那里。:
> >Traceback (most recent call last):
> >  File
>
>"D:\PYTHON23\lib\site-packages\Pythonwin\pywin\framework\scriptutils.py",
> >line 310, in RunScript
> >    exec codeObject in __main__.__dict__
> >  File "D:\Python23\src\data1.py", line 24, in ?
> >    print x
> >  File
>
>"D:\PYTHON23\lib\site-packages\Pythonwin\pywin\framework\winout.py",
> >line 172, in write
> >    return self.template.write(msg)
> >  File
>
>"D:\PYTHON23\lib\site-packages\Pythonwin\pywin\framework\winout.py",
> >line 487, in write
> >    self.HandleOutput(message)
> >  File
>
>"D:\PYTHON23\lib\site-packages\Pythonwin\pywin\framework\winout.py",
> >line 468, in HandleOutput
> >    self.QueueFlush()
> >  File
>
>"D:\PYTHON23\lib\site-packages\Pythonwin\pywin\framework\winout.py",
> >line 444, in QueueFlush
> >    item = str(item)
> >UnicodeEncodeError: 'ascii' codec can't encode
> >characters in position 0-5: ordinal not in
> range(128)
> >
> >
>
>_________________________________________________________
> >Do You Yahoo!? 
> >繁华世界里,让我看清你
>
>http://cn.rd.yahoo.com/mail_cn/tag/?http://cn.surveys.yahoo.com/cn_user_profile_study_dec2003
> >_______________________________________________
> >python-chinese mailing list
> >python-chinese at lists.python.cn
>
>http://lists.exoweb.net/cgi-bin/mailman/listinfo/python-chinese
> >
> 
> = = = = = = = = = = = = = = = = = = = =
> 			
> 
>         致
> 礼!
>  
> 				 
>         刘鑫
>         lx1978 at 21cn.com
>           2004-01-15
> 
>  

_________________________________________________________
Do You Yahoo!? 
繁华世界里,让我看清你
http://cn.rd.yahoo.com/mail_cn/tag/?http://cn.surveys.yahoo.com/cn_user_profile_study_dec2003


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

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

    你的回复:

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

    Zeuux © 2024

    京ICP备05028076号