如何在SQLITE中将一个查询的输出转换成另一个查询?

2024-04-19 23:49:40 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图将一个查询的输出用于另一个查询,但当我选择一个元素时,它会将输出作为

[(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

Tags: nameinfromselfnumberexecuteelementconn
1条回答
网友
1楼 · 发布于 2024-04-19 23:49:40

Pythons^{} 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])

相关问题 更多 >