我在Python中有一个连接数据库的数据库模块,从表登录中提取数据。提取数据,即用户名和密码由类中的变量uname和passw inside方法保存。我正在尝试登录login.py中的数据库模块,我将需要变量uname和passw。我如何访问变量? 这是database.py。
#usr/bin/python
import MySQLdb as mdb
class data:
hey = "ok"
def __init__(self):
"""Retrieves the data from the database"""
def db(self):
#Database Connection
con = mdb.connect('localhost', 'root', 'devil', 'data');
#Submit statements to SQL server
cursor = con.cursor()
cursor.execute("SELECT * FROM login")
#Retrieves data from SQL
rows = cursor.fetchall()
row = list(rows)
self.uname = [x[1] for x in row]
self.passw = [k[2] for k in row]
hello = data()
我想在login.py中调用变量uname和passw。我怎么能这样做?
答案 0 :(得分:2)
你做不到。这些变量是方法的本地变量,除非方法正在执行,否则不存在。如果您想稍后读取这些值,则需要通过执行self.uname = ...
和self.passw = ...
来创建实例属性。然后,您可以在以后引用该对象的任何地方阅读它们。
答案 1 :(得分:2)
在您的示例中,uname
和passw
是在data.db()
之外不可见的本地变量。要使其可见,您可以通过添加self.
使其成为实例属性(字段)。在constuctor中,您可以添加self.uname = None
和db()
方法self.uname = [...]
。然后您可以uname = hello.uname
访问它们。
如果您想在其他文件中使用它:
import database
db_data = database.data()
print('user: %s' % (db_data.uname))