-1

データベースに接続するPythonのデータベースモジュールがあり、テーブルログインからデータを抽出します。抽出データ、つまりユーザー名とパスワードは、クラス内のメソッド内の変数 uname と passw によって保持されます。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 を呼び出したい。どうやってやるの?

4

2 に答える 2

2

できません。これらの変数はメソッドに対してローカルであり、メソッドの実行中以外は存在しません。これらの値を後で読みたい場合は、代わりにself.uname = ...andを実行してインスタンス属性にする必要がありますself.passw = ...。その後、オブジェクトへの参照がある場所ならどこからでもそれらを読み取ることができます。

于 2012-08-30T05:52:33.697 に答える
2

あなたの例unamepasswは、外部では見えないローカル変数ですdata.db()。表示できるようにするには、 を追加してインスタンス属性 (フィールド) にしself.ます。コンストラクターでは、メソッドにself.uname = Noneとを追加できます。次に、 でそれらにアクセスできます。db()self.uname = [...]uname = hello.uname

他のファイルで使用したい場合:

import database

db_data = database.data()
print('user: %s' % (db_data.uname))
于 2012-08-30T05:55:25.307 に答える