2012-10-05 5 views
-1

저는 Python을 처음 사용하기 때문에 .getRow 메서드가 실행되지 않는 이유를 알 수 없습니다. dbMain.py에 DBMain 클래스를 만들고 pyTest.py를 사용하여 getRow를 실행하는 DBMain 객체를 만들었습니다. Eclipse에서 디버거를 실행할 때 DBMain의 생성자가 실행되지만 getRow 메서드가 호출되면 아무 일도 일어나지 않습니다.Python 메서드가 클래스에서 실행되지 않습니다.

pyTest.py

import dbMain 

def main(): 
    db = dbMain.DbMain() 
    db.getRow() 

if __name__ == '__main__': 
    main() 

dbMain.py

#@PydevCodeAnalysisIgnore 
import pyodbc 
class DbMain(object): 
    cncx = '' 
    def __init__(self): 
     cnxn = pyodbc.connect(driver='{SQL Server}', 
           server='server', 
           database='database', 
           uid='name', 
           pwd='pwd') 

    def getRow(): 
     cursor = cnxn.cursor() 
     cursor.execute("select user_id, user_name from users") 
     row = cursor.fetchone() 
     return row 
+2

cnxn이 정의되지 . – Matthias

답변

1
  1. 당신은 getRow에서하지 반환 아무것도. 어쩌면 당신은

    ... 
    return row 
    
  2. 귀하의 getRow() 방법은 클래스에 바인드되지 않은 같은 것을 포함 할. 인스턴스 메소드의 서명은 getRow(self)과 같아야합니다. 첫 번째 매개 변수는 명시 적으로 수신되는 인스턴스입니다 (단, someinstance.method()을 호출하면 암시 적으로 전달됩니다).

가 작동 뭔가를, 당신은 아마 이런 식으로 dbMain을 변경해야합니다

#@PydevCodeAnalysisIgnore 
import pyodbc 
class DbMain(object): 
    def __init__(self): 
     # make cnxn an attribute of the instance 
     self.cnxn = pyodbc.connect(driver='{SQL Server}', server='server', 
      database='database', uid='name', pwd='pwd') 

    # receive `self` explicitly 
    def getRow(self): 
     cursor = self.cnxn.cursor() 
     cursor.execute("select user_id, user_name from users") 
     row = cursor.fetchone() 
     # actually return something 
     return row 

추가 읽기 : getRow에서

+3

그가'getRow (self)'도 누락하지 않았습니까? – Vyktor

+0

메소드와 함께 리턴 행을 가지고 있는데 여전히 메소드가 실행되지 않았습니다 – Chad

+0

@Chad : 현재 코드에'getRow (self)'가 있습니까? –

관련 문제