-1

我是 Python 新手,似乎无法弄清楚为什么 .getRow 方法不运行。我在 dbMain.py 中创建了一个 DBMain 类,我正在使用 pyTest.py 创建 DBMain 对象来运行 getRow。当我在 Eclipse 中运行调试器并且 DBMain 的构造函数运行时,但是当调用 getRow 方法时没有任何反应。

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
4

1 回答 1

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

进一步阅读:

于 2012-10-05T18:47:11.663 回答