2010-06-08 2 views
0

파이썬에서 sqlobject를 사용하고 있습니다. 나는sqlobject :이 스레드 또는 프로세스에 대한 연결이 정의되어 있지 않습니다.

conn = connectionForURI(connStr) 
conn.makeConnection() 

이 성공으로 데이터베이스에 연결, 나는 연결에 쿼리를 수행 할 수 있습니다 의도 한대로

g_conn = conn.getConnection() 
cur = g_conn.cursor() 
cur.execute(query) 
res = cur.fetchall() 

이 작동합니다. 내가 클래스를 사용하여 쿼리를 수행 할 때

class User(SQLObject): 
    class sqlmeta: 
     table = "gui_user" 
    username = StringCol(length=16, alternateID=True) 
    password = StringCol(length=16) 
    balance = FloatCol(default=0) 

:

... 
    File "c:\python25\lib\site-packages\SQLObject-0.12.4-py2.5.egg\sqlobject\main.py", line 1371, in selectBy 
    conn = connection or cls._connection 
    File "c:\python25\lib\site-packages\SQLObject-0.12.4-py2.5.egg\sqlobject\dbconnection.py", line 837, in __get__ 
    return self.getConnection() 
    File "c:\python25\lib\site-packages\SQLObject-0.12.4-py2.5.egg\sqlobject\dbconnection.py", line 850, in getConnection 
    "No connection has been defined for this thread " 
AttributeError: No connection has been defined for this thread or process 

어떻게 수행

User.selectBy(username="foo") 

나는 예외가 그러나 나는 또한 어떤 클래스, 예를 정의 스레드에 대한 연결을 정의 하시겠습니까? 나는 방금 connection 키워드를 전달할 수 있음을 깨달았습니다. conn을 작동하게 만들 수는 있지만, 그렇게하지 않으면 어떻게 작동합니까?

답변

3

해야 할 것 :

from sqlobject import sqlhub, connectionForURI 

sqlhub.processConnection = connectionForURI(connStr) 
관련 문제