如何在函数之间调用SQLite Cursor对象?

时间:2017-07-22 09:38:55

标签: python sqlite

我现在熟悉Python,并编写了一个简单的代码来访问SQLite数据库并通过SELECT查询显示数据。我一直专注于程序编程方面,因此数据库连接和数据检索被写入2个函数,如下所示。

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语句。 我怀疑这意味着调用范围不接受全局变量可能是问题。 这个代码有什么问题吗?

1 个答案:

答案 0 :(得分: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])

你需要在函数之外定义一个变量,然后你可以在函数内修改它。