只使用sqlite3.connect的遊標實例我想知道它(遊標實例)是否有執行查詢與否。Python,Sqlite的 - 有沒有什麼辦法來區分查詢的空結果,而不是首先執行
def f(cur):
cur = connection.cursor()
if user decided to:
cur.execute("select * from aTable Where aCondition")
return cur
...
if f(cur).fetchone() == None:
print("No record found")
else:
...print records...
我的問題是,只使用返回cur
,我不知道如何在用戶決定不到訂購查詢,只是取消的情況區分(在返回的地方) 結果設置的情況下的搜索正好是空。
在我目前的代碼中,在這兩種情況下都會顯示「No record found」消息。是否有任何技巧(例如通過sqlite)指定任何查詢剛剛被執行而不管結果如何?
編輯:
請原諒我無法解釋我的情況,因爲它是在第一個地方(我在該領域缺乏經驗)
的消音我已經是一個設計如下。我不想在實例化時使用另一個全局變量或更改childWin類來接收另一個參數。通過這種方式,兩個窗口之間交互的唯一渠道似乎是cur對象(在cw實例減少後生存)。所以我該怎麼做?
class mainWin():
self.cw=childWin()
self.cur=self.cw.cur
self.wait_window(self.cw)
if self.cur==None:
**whether search has been canceled (by hitting cancel button) or result is empty?**
else:
use the returned records
class childWin(tkinter.Toplevel):
def __init__(self):
global con
self.cur=con.connection.cursor()
def cancel_button:
self.destroy()
def search_button():
self.cur.execute("select * from aTable Where aCondition")
self.destroy()
什麼是'用戶決定'?這是無效的對象名稱 –
我已經添加了直接的答案,但也許你可以在'mainWin'上創建'self.result = [None]',然後將它傳遞給'self.cw = childWin(self.result)',然後將'None'(空結果)或結果追加到'search_button()'中?這樣,如果用戶取消了,'self.result'列表將是'[None]',如果是空的結果,則''None,None]'和'[None,[..records ..]]'結果。絕對是hacky,但你似乎在這個領域:-)(這是一個消息隊列概念的嚴重簡化...) – thebjorn