2

基于分叉的示例,我构建了这个小脚本:

#!/usr/bin/env python
# -*- coding: utf-8 -*-

import sqlanydb
import os

def child():
    conn = sqlanydb.connect(uid='dba', pwd='sql', eng='somedb_IQ', dbn='somedb')
    curs = conn.cursor()
    curs.execute("""SELECT * FROM foobaa;""")
    os.exit(0)

def parent():
   while True:
      newpid = os.fork()
      if newpid == 0:
         child()
      else:
         pids = (os.getpid(), newpid)
         print "parent: %d, child: %d" % pids
      if raw_input( ) == 'q': break

parent()

目的是在单独的进程中执行数据库操作(以后的大目标是同时运行大量查询)。

但是在运行脚本时,我得到:

parent: 20580, child: 20587
Traceback (most recent call last):
  File "connectiontest.py", line 25, in <module>
    parent()
  File "connectiontest.py", line 19, in parent
    child()
  File "connectiontest.py", line 8, in child
    conn = sqlanydb.connect(uid='dba', pwd='sql', eng='somedb_IQ', dbn='somedb')
  File "/usr/local/lib/python2.6/dist-packages/sqlanydb.py", line 461, in connect
    return Connection(args, kwargs)
  File "/usr/local/lib/python2.6/dist-packages/sqlanydb.py", line 510, in __init__
    self.handleerror(*error)
  File "/usr/local/lib/python2.6/dist-packages/sqlanydb.py", line 520, in handleerror
    eh(self, None, errorclass, errorvalue)
  File "/usr/local/lib/python2.6/dist-packages/sqlanydb.py", line 342, in standardErrorHandler
    raise errorclass(errorvalue)
sqlanydb.OperationalError: Failed to initialize connection object

我可能错过了什么?

4

3 回答 3

1

由于 Sybase IQ 基于 Sybase ASA,您确定您使用的是正确的凭据密钥吗?这个(尽管是旧的)文档看起来需要 DSN 和 DSF 而不是 ENG 和 DBN。

http://dcx.sybase.com/1101/en/dbprogramming_en11/python-writing-open.html

于 2014-04-03T01:13:51.187 回答
1

import sqlanydb进入 child() 方法似乎不会发生此问题。所以它看起来像:

def child():
    import sqlanydb

    conn = sqlanydb.connect(uid='dba', pwd='sql', dsn='some_db')
    curs = conn.cursor()
    curs.execute("""SELECT * FROM SA100_1_1;""")
    curs.close()
    conn.close()
于 2015-06-26T11:17:03.743 回答
0

您需要破解sqlanydb源代码才能打印出所看到的实际错误。无论问题是什么,都被泛型所掩盖,而泛型OperationalError没有提供足够的信息来解决问题。Line510是您需要添加几个prints 以确定发生了什么(不发生)的地方。

于 2014-05-27T16:15:02.043 回答