Python 中使用adodbapi连接MS SQL SERVER2000数据库出错?求助!…

leafsky520 2004-07-16 04:48:49
我下载了pywin32-202.win32-py2.3.exe和adodbapi-2.0.1
使用adodbapi来连接数据库

在IDLE下输入:

import adodbapi
>>> con=adodbapi.connect("Driver={SQL Server};Server=localhost;Database=scb_db_12;Uid=sa;Pwd=")
>>> cur=con.cursor()
>>> cur.execute("select * from billrec;")
>>> cur.fetchall()

没什么问题,然后我输入:

cur.execute("select * from billmsg;")

可是出来一大堆错误:
Traceback (most recent call last):
File "<pyshell#6>", line 1, in -toplevel-
cur.execute("select * from billmsg;")
File "D:\Python23\Lib\site-packages\adodbapi\adodbapi.py", line 592, in execute
self.executeHelper(operation,0,parameters)
File "D:\Python23\Lib\site-packages\adodbapi\adodbapi.py", line 552, in executeHelper
self._raiseCursorError(DatabaseError,tracebackhistory)
File "D:\Python23\Lib\site-packages\adodbapi\adodbapi.py", line 407, in _raiseCursorError
eh(self.conn,self,errorclass,errorvalue)
File "D:\Python23\Lib\site-packages\adodbapi\adodbapi.py", line 38, in standardErrorHandler
raise errorclass(errorvalue)
DatabaseError:
-----------
Strategy 1: Traceback:Traceback (most recent call last):
File "D:\Python23\Lib\site-packages\adodbapi\adodbapi.py", line 487, in executeHelper
self.cmd.ActiveConnection=self.conn.adoConn
File "D:\Python23\Lib\site-packages\win32com\client\dynamic.py", line 527, in __setattr__
self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value)
com_error: (-2147352567, '\xb7\xa2\xc9\xfa\xd2\xe2\xcd\xe2\xa1\xa3', (0, 'Microsoft OLE DB Provider for ODBC Drivers', '\xd4\xda\xca\xc2\xce\xf1\xd6\xd0\xa3\xac\xb2\xbb\xc4\xdc\xb4\xe6\xd4\xda\xb6\xe0\xb8\xf6\xca\xb9\xd3\xc3\xb4\xcb\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xb5\xc4\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3\xc7\xeb\xb8\xfc\xb8\xc4\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xa1\xa2\xcc\xe1\xbd\xbb\xca\xc2\xce\xf1\xa3\xac\xbb\xf2\xb9\xd8\xb1\xd5\xc6\xe4\xd6\xd0\xc4\xb3\xb8\xf6\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3', None, 0, -2147467259), None)


-----------
Strategy 2: Traceback:Traceback (most recent call last):
File "D:\Python23\Lib\site-packages\adodbapi\adodbapi.py", line 487, in executeHelper
self.cmd.ActiveConnection=self.conn.adoConn
File "D:\Python23\Lib\site-packages\win32com\client\dynamic.py", line 527, in __setattr__
self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value)
com_error: (-2147352567, '\xb7\xa2\xc9\xfa\xd2\xe2\xcd\xe2\xa1\xa3', (0, 'Microsoft OLE DB Provider for ODBC Drivers', '\xd4\xda\xca\xc2\xce\xf1\xd6\xd0\xa3\xac\xb2\xbb\xc4\xdc\xb4\xe6\xd4\xda\xb6\xe0\xb8\xf6\xca\xb9\xd3\xc3\xb4\xcb\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xb5\xc4\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3\xc7\xeb\xb8\xfc\xb8\xc4\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xa1\xa2\xcc\xe1\xbd\xbb\xca\xc2\xce\xf1\xa3\xac\xbb\xf2\xb9\xd8\xb1\xd5\xc6\xe4\xd6\xd0\xc4\xb3\xb8\xf6\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3', None, 0, -2147467259), None)


-----------
Strategy 3: Traceback:Traceback (most recent call last):
File "D:\Python23\Lib\site-packages\adodbapi\adodbapi.py", line 487, in executeHelper
self.cmd.ActiveConnection=self.conn.adoConn
File "D:\Python23\Lib\site-packages\win32com\client\dynamic.py", line 527, in __setattr__
self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value)
com_error: (-2147352567, '\xb7\xa2\xc9\xfa\xd2\xe2\xcd\xe2\xa1\xa3', (0, 'Microsoft OLE DB Provider for ODBC Drivers', '\xd4\xda\xca\xc2\xce\xf1\xd6\xd0\xa3\xac\xb2\xbb\xc4\xdc\xb4\xe6\xd4\xda\xb6\xe0\xb8\xf6\xca\xb9\xd3\xc3\xb4\xcb\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xb5\xc4\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3\xc7\xeb\xb8\xfc\xb8\xc4\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xa1\xa2\xcc\xe1\xbd\xbb\xca\xc2\xce\xf1\xa3\xac\xbb\xf2\xb9\xd8\xb1\xd5\xc6\xe4\xd6\xd0\xc4\xb3\xb8\xf6\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3', None, 0, -2147467259), None)


-----------
Strategy 4: Traceback:Traceback (most recent call last):
File "D:\Python23\Lib\site-packages\adodbapi\adodbapi.py", line 487, in executeHelper
self.cmd.ActiveConnection=self.conn.adoConn
File "D:\Python23\Lib\site-packages\win32com\client\dynamic.py", line 527, in __setattr__
self._oleobj_.Invoke(entry.dispid, 0, invoke_type, 0, value)
com_error: (-2147352567, '\xb7\xa2\xc9\xfa\xd2\xe2\xcd\xe2\xa1\xa3', (0, 'Microsoft OLE DB Provider for ODBC Drivers', '\xd4\xda\xca\xc2\xce\xf1\xd6\xd0\xa3\xac\xb2\xbb\xc4\xdc\xb4\xe6\xd4\xda\xb6\xe0\xb8\xf6\xca\xb9\xd3\xc3\xb4\xcb\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xb5\xc4\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3\xc7\xeb\xb8\xfc\xb8\xc4\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xa1\xa2\xcc\xe1\xbd\xbb\xca\xc2\xce\xf1\xa3\xac\xbb\xf2\xb9\xd8\xb1\xd5\xc6\xe4\xd6\xd0\xc4\xb3\xb8\xf6\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3', None, 0, -2147467259), None)

--- ADODBAPI on command:select * from billmsg; with parameters: None

不知道为什么,查了一些资料,还是不能解决。数据库中存在billmsg表,select * from billmsg也没错啊。
...全文
497 9 打赏 收藏 转发到动态 举报
写回复
用AI写文章
9 条回复
切换为时间正序
请发表友善的回复…
发表回复
hairui 2004-07-26
  • 打赏
  • 举报
回复
你们的错误是:
'\xd4\xda\xca\xc2\xce\xf1\xd6\xd0\xa3\xac\xb2\xbb\xc4\xdc\xb4\xe6\xd4\xda\xb6\xe0\xb8\xf6\xca\xb9\xd3\xc3\xb4\xcb\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xb5\xc4\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3\xc7\xeb\xb8\xfc\xb8\xc4\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xa1\xa2\xcc\xe1\xbd\xbb\xca\xc2\xce\xf1\xa3\xac\xbb\xf2\xb9\xd8\xb1\xd5\xc6\xe4\xd6\xd0\xc4\xb3\xb8\xf6\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3'
->在事务中,不能存在多个使用此游标类型的记录集。请更改游标类型、提交事务,或关闭其中某个记录集。
hairui 2004-07-26
  • 打赏
  • 举报
回复
唉,大家都有问题,关键在于出错后数据库驱动用中文输出但是PYTHON显示不了
教你们一个办法:
str=\xca\xfd\xbe\xdd\xc0\xe0\xd0\xcd\xb2\xbb\xb1\xbb\xd6\xa7\xb3\xd6"
str
然后PYTHON显示:
'数据类型不被支持'
mahongxi 2004-07-26
  • 打赏
  • 举报
回复
To hairui(海瑞) :
多谢,你说的没错.
我也试图得到错误信息,但上次没试出来,今天又试了一次,得到中文了:

Python 2.3.4 (#53, May 25 2004, 21:17:02) [MSC v.1200 32 bit (Intel)] on win32
Type "copyright", "credits" or "license()" for more information.

****************************************************************
Personal firewall software may warn about the connection IDLE
makes to its subprocess using this computer's internal loopback
interface. This connection is not visible on any external
interface and no data is sent to or received from the Internet.
****************************************************************

IDLE 1.0.3
>>> str ='\xd4\xda\xca\xc2\xce\xf1\xd6\xd0\xa3\xac\xb2\xbb\xc4\xdc\xb4\xe6\xd4\xda\xb6\xe0\xb8\xf6\xca\xb9\xd3\xc3\xb4\xcb\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xb5\xc4\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3\xc7\xeb\xb8\xfc\xb8\xc4\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xa1\xa2\xcc\xe1\xbd\xbb\xca\xc2\xce\xf1\xa3\xac\xbb\xf2\xb9\xd8\xb1\xd5\xc6\xe4\xd6\xd0\xc4\xb3\xb8\xf6\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3'

>>> str
'\xd4\xda\xca\xc2\xce\xf1\xd6\xd0\xa3\xac\xb2\xbb\xc4\xdc\xb4\xe6\xd4\xda\xb6\xe0\xb8\xf6\xca\xb9\xd3\xc3\xb4\xcb\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xb5\xc4\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3\xc7\xeb\xb8\xfc\xb8\xc4\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xa1\xa2\xcc\xe1\xbd\xbb\xca\xc2\xce\xf1\xa3\xac\xbb\xf2\xb9\xd8\xb1\xd5\xc6\xe4\xd6\xd0\xc4\xb3\xb8\xf6\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3'
>>> str = u'\xd4\xda\xca\xc2\xce\xf1\xd6\xd0\xa3\xac\xb2\xbb\xc4\xdc\xb4\xe6\xd4\xda\xb6\xe0\xb8\xf6\xca\xb9\xd3\xc3\xb4\xcb\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xb5\xc4\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3\xc7\xeb\xb8\xfc\xb8\xc4\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xa1\xa2\xcc\xe1\xbd\xbb\xca\xc2\xce\xf1\xa3\xac\xbb\xf2\xb9\xd8\xb1\xd5\xc6\xe4\xd6\xd0\xc4\xb3\xb8\xf6\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3'
>>> str
u'\xd4\xda\xca\xc2\xce\xf1\xd6\xd0\xa3\xac\xb2\xbb\xc4\xdc\xb4\xe6\xd4\xda\xb6\xe0\xb8\xf6\xca\xb9\xd3\xc3\xb4\xcb\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xb5\xc4\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3\xc7\xeb\xb8\xfc\xb8\xc4\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xa1\xa2\xcc\xe1\xbd\xbb\xca\xc2\xce\xf1\xa3\xac\xbb\xf2\xb9\xd8\xb1\xd5\xc6\xe4\xd6\xd0\xc4\xb3\xb8\xf6\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3'
>>> print str
ÔÚÊÂÎñÖУ¬²»ÄÜ´æÔÚ¶à¸öʹÓôËÓαêÀàÐ͵ļǼ¼¯¡£Çë¸ü¸ÄÓαêÀàÐÍ¡¢Ìá½»ÊÂÎñ£¬»ò¹Ø±ÕÆäÖÐij¸ö¼Ç¼¼¯¡£
>>> str = '\xd4\xda\xca\xc2\xce\xf1\xd6\xd0\xa3\xac\xb2\xbb\xc4\xdc\xb4\xe6\xd4\xda\xb6\xe0\xb8\xf6\xca\xb9\xd3\xc3\xb4\xcb\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xb5\xc4\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3\xc7\xeb\xb8\xfc\xb8\xc4\xd3\xce\xb1\xea\xc0\xe0\xd0\xcd\xa1\xa2\xcc\xe1\xbd\xbb\xca\xc2\xce\xf1\xa3\xac\xbb\xf2\xb9\xd8\xb1\xd5\xc6\xe4\xd6\xd0\xc4\xb3\xb8\xf6\xbc\xc7\xc2\xbc\xbc\xaf\xa1\xa3'
>>> print str
在事务中,不能存在多个使用此游标类型的记录集。请更改游标类型、提交事务,或关闭其中某个记录集。
>>>
elsefish 2004-07-20
  • 打赏
  • 举报
回复
不懂!
学习了
mahongxi 2004-07-19
  • 打赏
  • 举报
回复
KAO ,oracle 中遇到你同样的问题,明天再搞.

import adodbapi

def EncodeValue(Value):
if type(Value)==type(u''):
return Value.encode('UTF16')
else:
return str(Value)

con=adodbapi.connect("Provider=MSDAORA.1;Password=urrp1020;User ID=urrp1020;Data Source=ORA10G.NETSKY.COM;Persist Security Info=True")
cur = con.cursor()
cur.execute("select * from plxutest1 t where rownum < 10")
rst = cur.fetchall()
for row in rst:
for item in row:
print EncodeValue(item),
print

cur.close()
del cur
cur = con.cursor()
cur.execute("select * from ct_bbs where rownum < 10")
rst = cur.fetchall()
for row in rst:
for item in row:
print EncodeValue(item),
print
cur.close()

 File "E:\MyExes\py\db2.py", line 21, in ?
cur.execute("select * from ct_bbs where rownum < 10")
File "D:\bin\Python23\Lib\site-packages\adodbapi\adodbapi.py", line 592, in ex
cute
self.executeHelper(operation,0,parameters)
File "D:\bin\Python23\Lib\site-packages\adodbapi\adodbapi.py", line 552, in ex
cuteHelper
self._raiseCursorError(DatabaseError,tracebackhistory)
File "D:\bin\Python23\Lib\site-packages\adodbapi\adodbapi.py", line 407, in _r
iseCursorError
eh(self.conn,self,errorclass,errorvalue)
File "D:\bin\Python23\Lib\site-packages\adodbapi\adodbapi.py", line 38, in sta
dardErrorHandler
raise errorclass(errorvalue)
dodbapi.adodbapi.DatabaseError:
----------
trategy 1: Traceback:Traceback (most recent call last):
File "D:\bin\Python23\Lib\site-packages\adodbapi\adodbapi.py", line 540, in e
ecuteHelper
adoRetVal=self.cmd.Execute()
File "<COMObject ADODB.Command>", line 2, in Execute
File "D:\bin\Python23\lib\site-packages\win32com\client\dynamic.py", line 240
in _ApplyTypes_
result = self._oleobj_.InvokeTypes(*(dispid, LCID, wFlags, retType, argTypes
+ args)
com_error: (-2147352567, 'Exception occurred.', (0, 'Microsoft OLE DB Provider
or Oracle', '\xca\xfd\xbe\xdd\xc0\xe0\xd0\xcd\xb2\xbb\xb1\xbb\xd6\xa7\xb3\xd6\x
1\xa3', None, 0, -2147467259), None)


----------
trategy 2: Traceback:Traceback (most recent call last):
File "D:\bin\Python23\Lib\site-packages\adodbapi\adodbapi.py", line 540, in e
ecuteHelper
...
mahongxi 2004-07-17
  • 打赏
  • 举报
回复
import adodbapi

def EncodeValue(Value):
if type(Value)==type(u''):
return Value.encode('UTF-8')
else:
return str(Value)

con=adodbapi.connect("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\Documents and Settings\Administrator\My Documents\db3.mdb;Persist Security Info=False")
cur = con.cursor()
cur.execute("select * from book;")
rst = cur.fetchall()
for row in rst:
for item in row:
print EncodeValue(item),
print

cur.execute("select * from book2;")
rst = cur.fetchall()
for row in rst:
for item in row:
print EncodeValue(item),
print




在我这里没有任何问题 py2.3.4 + adodbapi-2.0.1
leafsky520 2004-07-17
  • 打赏
  • 举报
回复
还是不行!
很多电脑上都试过了
不明白
什么原因
第一次运行是好的
会不会是
pywin32-202.win32-py2.3.exe和adodbapi-2.0.1的关系
jumpandfly 2004-07-17
  • 打赏
  • 举报
回复
去掉SQL语句中的';'再试试
leafsky520 2004-07-17
  • 打赏
  • 举报
回复
还是不行!我用的是SQL SERVER2000,会有什么区别?
下面的代码不知道哪里有错
我用的环境是 Python2.3.4 + adodbapi-2.0.1+
pywin32-202.win32-py2.3

import adodbapi

con=adodbapi.connect("Driver={SQL Server};Server=localhost;Trusted_Connection=True;Database=scb_db_12;Uid=sa;Pwd=")

cur=con.cursor()

cur.execute("select * from BillMsg;")
str1=cur.fetchall()

cur.execute("select * from AlarmMsg;")
str2=cur.fetchall()

cur.close()
con.close()
哪里出错了呢?

37,719

社区成员

发帖
与我相关
我的任务
社区描述
JavaScript,VBScript,AngleScript,ActionScript,Shell,Perl,Ruby,Lua,Tcl,Scala,MaxScript 等脚本语言交流。
社区管理员
  • 脚本语言(Perl/Python)社区
  • IT.BOB
加入社区
  • 近7日
  • 近30日
  • 至今

试试用AI创作助手写篇文章吧