2014-04-02 22 views
2

,我建立這個小腳本:啓動叉內與sqlanydb數據庫連接基礎上的分叉爲例

#!/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 

什麼我可能會錯過?

回答

0

這個問題似乎不會通過將import sqlanydb移動到child() - methode中而發生。所以它看起來像這樣:

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() 
0

您需要破解的sqlanydb源打印出實際的錯誤被人看見。無論什麼問題被一個通用的OperationalError所掩蓋,這並不能提供足夠的信息來解決問題。行510是你需要添加幾個print s來找出什麼是(不)正在進行。

+0

在那裏停靠的地方看不到太多。 – frlan