2017-07-22 42 views
0

我最近熟悉Python並且正在編寫一個簡單的代碼來訪問SQLite數據庫並顯示一個SELECT查詢的數據。我一直關注程序編程方面,因此數據庫連接和數據檢索被寫入2個函數,如下所示。如何調用函數之間的SQLite遊標對象?

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]) 

你需要定義變量的函數之外,那麼你可以修改它裏面的功能。