2017-06-16 90 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那么名称改变的背后是什么,你是谁?正如你所看到的,我打勾了! –

相关问题