import pyodbc
class Database(object):
def connect(self):
connection = pyodbc.connect("""DRIVER={SQL Server};
SERVER=XX\SQLEXPRESS;
DATABASE=ACCOUNT_DBF;
UID=sa;PWD=XXX""")
cursor = connection.cursor()
def check_account(self, usr):
cursor.execute("SELECT * FROM ACCOUNT_TBL WHERE account = ?", usr)
row = cursor.fetchone()
print(row[0])
database = Database()
database.check_account("developer")
所以,你可以看到我试图用“developer”参数调用“check_account”函数。但每当我执行/构建它时,它都会给我一个错误
“NameError:未定义名称游标”
对于如何实际操作,我很好奇并且对python不熟悉。我一直在网上搜索,但我找不到我的问题的具体答案。
*我正在使用最新的python btw(3.6.1)。
答案 0 :(得分:2)
触发NameError
异常,因为在check_account
方法中,您无法看到connect
方法中定义的局部变量。
您需要设置实例属性" inside" self
,因为您可以从所有方法访问self
(它是实例本身)。
def connect(self):
self.connection = pyodbc.connect("""DRIVER={SQL Server};
SERVER=XX\SQLEXPRESS;
DATABASE=ACCOUNT_DBF;
UID=sa;PWD=XXX""")
self.cursor = connection.cursor()
def check_account(self, usr):
self.cursor.execute("SELECT * FROM ACCOUNT_TBL WHERE account = ?", usr)
row = self.cursor.fetchone()
print(row[0])
答案 1 :(得分:0)
尝试:
class Database(object):
def connect(self):
connection = pyodbc.connect("""DRIVER={SQL Server};
SERVER=XX\SQLEXPRESS;
DATABASE=ACCOUNT_DBF;
UID=sa;PWD=XXX""")
self.cursor = connection.cursor()
在你的代码中,cursor
是变量,下面是方法,只有self.cursor
可以将光标存储到类中,然后其他方法可以使用。