首页 > 解决方案 > 错误:('HY000','驱动程序没有提供错误!')

问题描述

我有 5 个不同的连接字符串存储在 connstr 列表中,我有一个表列表,其中包含存储在 templst 中的数据。所以内容看起来像

templst = [lineitem, orders, partsupp, region, cur_cur, T1, T2]

connstr = [DRIVER={libdbodbc17.so};host=lint16muthab.phl.sap.corp:8766;UID=dba;PWD=sql;CharSet=utf8, DRIVER={libdbodbc17.so};host=localhost:8767;UID=dba;PWD=sql;CharSet=utf8,
           DRIVER={libdbodbc17.so};host=localhost:8768;UID=dba;PWD=sql;CharSet=utf8,
           DRIVER={libdbodbc17.so};host=localhost:8769;UID=dba;PWD=sql;CharSet=utf8, DRIVER={libdbodbc17.so};host=localhost:8770;UID=dba;PWD=sql;CharSet=utf8]

现在,对于每个 connstr,我使用 db 连接打开了一个 db 连接

connvar = pyodbc.connect(connstr, autocommit=True)

对于每个连接,我都打开了一个游标并将游标对象存储在列表中。

curlst = [<pyodbc.Cursor object at 0x7fcd9b47f270> ,<pyodbc.Cursor object at 0x7fcd9b47f330> ,<pyodbc.Cursor object at 0x7fcd9b47f390>, 
      <pyodbc.Cursor object at 0x7fcd9b47f3f0>, <pyodbc.Cursor object at 0x7fcd9b47f450> ]

所以我为每个连接字符串有 5 个光标。

现在我想使用多处理并行运行带有这 5 个游标的每个表的查询。所以 cursor1 执行 table1 等等,直到 cursor5 到 table5 所有 5 个应该同时开始现在在 5 个游标中任何一个都可以完成,所以它应该能够立即执行 table6 等等所有表。

def extract_single(q, cursorconn):
    while True:
        try:
            tableName = q.get_nowait()
            qry2 = "Select count(*) FROM %s"%(tableName)
            cursorconn.execute(qry2)
            rowcnt = cursorconn.fetchone()[0]
            print " rows in tempdsc=",rowcnt
            print " extraction done of table:%s done by cursor:%s"%(tableName,cursorconn)
        except Queue.Empty:
            return

def main():
    q = multiprocessing.Queue()
    for item in tempdsclst:
        q.put(item) # add items to queue
    process = []
    for i in xrange(5):
        p = multiprocessing.Process(target=extract_single, args=(q, curlst[i]))
        process.append(p)
        p.start()
    for p in process:
        p.join()

它给出了类似的错误

Process Process-1:
Traceback (most recent call last):
  File "/sybopt/software/python/python/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
Process Process-2:
Traceback (most recent call last):
    self.run()
  File "/sybopt/software/python/python/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
  File "/sybopt/software/python/python/lib/python2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "conn4.py", line 87, in extract_single
    cursorconn.execute(qry2)
Error: ('HY000', 'The driver did not supply an error!')
    self.run()
  File "/sybopt/software/python/python/lib/python2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "conn4.py", line 87, in extract_single
    cursorconn.execute(qry2)
Error: ('HY000', 'The driver did not supply an error!')
Process Process-3:
Traceback (most recent call last):
  File "/sybopt/software/python/python/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/sybopt/software/python/python/lib/python2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "conn4.py", line 87, in extract_single
    cursorconn.execute(qry2)
Error: ('HY000', 'The driver did not supply an error!')
Process Process-4:
Traceback (most recent call last):
  File "/sybopt/software/python/python/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
File "/sybopt/software/python/python/lib/python2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "conn4.py", line 87, in extract_single
    cursorconn.execute(qry2)
Error: ('HY000', 'The driver did not supply an error!')
Process Process-5:
Traceback (most recent call last):
  File "/sybopt/software/python/python/lib/python2.7/multiprocessing/process.py", line 258, in _bootstrap
    self.run()
  File "/sybopt/software/python/python/lib/python2.7/multiprocessing/process.py", line 114, in run
    self._target(*self._args, **self._kwargs)
  File "conn4.py", line 87, in extract_single
    cursorconn.execute(qry2)
Error: ('HY000', 'The driver did not supply an error!')

为什么我收到此错误?

标签: pythonmultiprocessingcursorpyodbc

解决方案


推荐阅读