从SQLITE表检索值并用于查询另一个表

时间:2019-04-24 16:35:30

标签: python python-2.7 sqlite

我正在从SQLITE表中检索一个值,然后使用SELECT FROM WHERE语句使用该值从另一个表中检索数据。我不能使用检索到的值来查询其他表,即使当我独立于要查询的表来检索此值时,这些值似乎都匹配。我收到错误绑定参数0-可能是不受支持的类型。我从我在文档中阅读的内容中传递了我正确相信的价值,但是显然存在错误。

编辑:最终目标是选择Name和EndTime,然后在同一表中的列值= Name的情况下,将EndTime值插入同一数据库的另一个表中。在下面添加了更新代码,可以大致了解我要完成的工作。

当我打印nameItem时,它看起来是一个unicode字符串,(u'Something')就是它的显示方式。我不知道这是否是编码问题,但是我之前曾使用过类似的查询,但并未遇到此问题。

我试图直接在SELECT查询中使用我要搜索的文本,但这可以工作,但是当将其作为变量传递时,我仍然会得到不受支持的类型。

c.execute('SELECT Name FROM Expected WHERE Timing = 1')
timeList = c.fetchall()
for i in range(len(timeList)):
    nameItem = timeList[i]
    c.execute('SELECT "EndTime" FROM Expected WHERE "Name" = ?', (nameItem,))
    end = c.fetchone()
    conn = sqlite3.connect(otherDb)
    c = conn.cursor()
    c.execute('UPDATE Individuals SET Ending = end WHERE NAME = NameItem')

我希望它可以检索与nameItem当前值相关的时间。

1 个答案:

答案 0 :(得分:0)

尝试的第一个解决方法是使用字符串而不是元组(注意timeList是元组列表):

nameItem = timeList[i][0]

但是最好不要使用len,类似这样:

c.execute('SELECT Name FROM Expected WHERE Timing = 1')
timeList = c.fetchall()
for elem in timeList:
    nameItem = elem[0]
    c.execute('SELECT "EndTime" FROM Expected WHERE "Name" = ?', (nameItem,))
    end = c.fetchone()

更好的是在第一个查询中获取EndTime(在给定的上下文中看起来可以接受):

c.execute('SELECT Name, EndTime FROM Expected WHERE Timing = 1')
timeList = c.fetchall()
for elem in timeList:
    name = elem[0]
    end_time = elem[1]