2017-07-22 10 views
0

最近、Pythonに精通しており、SQLiteデータベースにアクセスしてSELECTクエリからデータを表示するための簡単なコードを書いていました。私はプロシージャプログラミングの側面に焦点を当てているので、データベース接続とデータ検索は次のように2つの関数に書き込まれました。関数間でSQLite Cursorオブジェクトを呼び出す方法は?

def AccessDB(): 
    global BCDB,curVehicle,VehicleTB 
    BCDB = sqlite3.connect('D:\CabDB.sqlite') 
    curVehicle = BCDB.cursor() 
    VehicleTB = BCDB.cursor() 

def getData(): 
    curVehicle.execute('SELECT * FROM Vehicle')                    
    Result=curVehicle.fetchall() 
    print(Result[0]) 
    List1.insert(0,Result[0][0]) 

し、メインプログラム:実行すると

AccessDB() 
getData() 

、私はエラーを以下の取得:

line 57, in getData 
curVehicle.execute('SELECT * FROM Vehicle') 
NameError: name 'curVehicle' is not defined 

ライン57は、文を.executeを指します。 これは、グローバル変数が呼び出しスコープで受け入れられないことが問題である可能性があることを意味します。 このコードに何か問題がありますか?関数の外

+0

は、メインプログラムと同じモジュール内で定義されたAccessDBとgetDataですか? – BenJ

答えて

0

単純に定義する変数は、私の仕事:

BCDB,curVehicle,VehicleTB = (0,0,0) 
def AccessDB(): 
    BCDB = sqlite3.connect('D:\CabDB.sqlite') 
    curVehicle = BCDB.cursor() 
    VehicleTB = BCDB.cursor() 

def getData(): 
    curVehicle.execute('SELECT * FROM Vehicle')                    
    Result=curVehicle.fetchall() 
    print(Result[0]) 
    List1.insert(0,Result[0][0]) 

あなたは関数の中にそれを修正することができるので、関数の外で変数を定義する必要があります。

関連する問題