2017-06-16 92 views
1

我試圖使用一個查詢的輸出到另一個查詢,但是當我選擇一個元素,它給了我輸出,如何將一個查詢的輸出用於SQLITE中的另一個查詢?

[(8, u'O', 2, 16)] 
[(8,)] 
[ ] 

所以第三個查詢工作不正常。我認爲問題在於我打印的是單個數字,但輸出是數字列表,我試圖修復它,但仍然卡在這裏。

def OnClick(self, event):          
    name = event.GetEventObject().GetLabelText() 
    cursor= self.conn.execute("SELECT * FROM ELEMENT where SYMBOL=='%s'"%(name)) 
    elements = cursor.fetchall() 
    print elements 
    cursor= self.conn.execute("SELECT ATOMIC_NUMBER FROM ELEMENT where SYMBOL IN ('%s')"%(name)) 
    numbers = cursor.fetchall() 
    print numbers 
    cursor= self.conn.execute("SELECT * FROM LINK where ELEMENT_NUMBER = 'numbers'") 
    mnumbers = cursor.fetchall() 
    print mnumbers 
    #cursor= self.conn.execute("SELECT * FROM LINK where ELEMENT_NUMBER IN (SELECT ATOMIC_NUMBER FROM ELEMENT where SYMBOL IN ('%s')%(SYMBOL))") 
    #cursor= self.conn.execute("SELECT * FROM MOLECULE where MOL_NUMBER=='%d'"%(Mnumbers)) 
    #molecules = cursor.fetchall() 
#print molecules 

回答

0

蟒蛇sqlite3 documentation說,就在上面,你不應該做%s替代與你的價值觀。

正確的方式來獲得變量值到一個查詢與SQL參數:

...execute("SELECT * FROM ELEMENT where SYMBOL==?", [name]) 

...execute("SELECT ATOMIC_NUMBER FROM ELEMENT where SYMBOL = ?", [name]) 

atomicnumber = numbers[0][0] # extract value in first column of first row 
...execute("SELECT * FROM LINK where ELEMENT_NUMBER = ?", [atomicnumber]) 
+0

奏效很好 –

+1

@YashwanthSPrabhu最後,別人已經回答了你的問題之一,儘管我要求你至少5倍閱讀SO如何工作,你仍然堅持不接受答案。點擊一個按鈕真的不難!還有一件事,雖然我咆哮,你爲什麼改變你的名字。你曾經是HimanshuPareek那麼名稱改變的背後是什麼,你是誰?正如你所看到的,我打勾了! –

相關問題