我正在尝试开发一个软件(Python 3 - Tkinter)来处理2个firebird数据库。数据库" A"是至关重要的,所以我的程序只允许在其上执行select语句。数据库" B"直接从我的程序填充,因此授予完全访问权限。
我创建了多个python类来保存各种窗口(每个窗口一个类),并且在每个类中我需要1)在数据库A上执行SELECT语句,2)在数据库B上执行SELECT / INSERT / INSERT OR UPDATE语句
我想知道的是我应该如何组织连接对象和游标。我想我应该在主应用程序中打开连接,但我不知道是否:
为每个连接只创建一个游标,并将这些游标用于不同类中的每个语句:
conA=fdb.connect(database A)
conA.begin(fdb.ISOLATION_LEVEL_READ_COMMITED_RO)
cursorA=conA.cursor()
conB=fdb.connect(database B)
cursorB=conB.cursor()
Class example1():
cursorA.execute("SELECT ......")
cursorB.execute("SELECT.......")
cursorB.execute("INSERT INTO...")
Class example2():
cursorA.execute("SELECT ......")
cursorB.execute("SELECT.......")
cursorB.execute("INSERT INTO...")
在每个类中直接创建多个游标,每个游标一个:
conA=fdb.connect(database A)
conA.begin(fdb.ISOLATION_LEVEL_READ_COMMITED_RO)
conB=fdb.connect(database B)
Class example1():
cursorA1=conA.cursor()
cursorA1.execute("SELECT ......")
cursorB1=conB.cursor()
cursorB2=conB.cursor()
cursorB1.execute("SELECT.......")
cursorB2.execute("INSERT INTO...")
Class example2():
cursorA2=conA.cursor()
cursorA2.execute("SELECT ......")
cursorB3=conB.cursor()
cursorB4=conB.cursor()
cursorB3.execute("SELECT.......")
cursorB4.execute("INSERT INTO...")
每次需要连接时,打开并关闭每个类中的整个连接(和游标):
Class example1():
conA=fdb.connect(database A)
conA.begin(fdb.ISOLATION_LEVEL_READ_COMMITED_RO)
cursorA=conA.cursor()
cursorA.execute("SELECT ......")
conA.close()
conB=fdb.connect(database B)
cursorB=conB.cursor()
cursorB.execute("SELECT ......")
cursorB.execute("INSERT ......")
conB.close()
(其他课程相同)
那么,这些选项中的任何一个都适合吗?