python sqlite:从两个表和输出列

时间:2017-01-21 19:04:04

标签: python sqlite

我有一个带有两个表'NNDATA'和'TEAM'的sqlite数据库。 TEAM有一列'cpids'。 NNDATA有8列,列[0]是'CPID',但并非所有列都匹配来自TEAM表的cpids。

来自TEAM的cpids与来自NNDATA的CPID匹配,我想返回来自NADATA列[2]'NeuralMagnitude'和列[5]'地址'的匹配行条目

我试过了:

conn = sqlite3.connect("Rain.db")
c = conn.cursor()
address = c.execute('select Address from NNDATA where CPID=(select cpids from TEAM)').fetchall()
nn_mag = c.execute('select NeuralMagnitude from NNDATA where CPID=(select cpids from TEAM)').fetchall()
conn.close()

但它只给了我一个结果,我做了一个列表比较并获得了100个匹配,所以我99%确定它找不到所有的匹配。

我也尝试将cpids变为变量:

conn = sqlite3.connect("Rain.db")
c = conn.cursor()
cpids = c.execute('select cpids from TEAM').fetchall()
address = c.execute('select Address from NNDATA where CPID={cpids}'.format(cpids=cpids)).fetchall()
nn_mag = c.execute('select NeuralMagnitude from NNDATA where CPID={cpids}'.format(cpids=cpids)).fetchall()
conn.close()

但似乎没有人认识到地址和神经概念。

我看到了一些sqlite解决方案,但它们似乎运行了几行代码,我认为对于Python它必须在一行中调用? 感谢。

1 个答案:

答案 0 :(得分:0)

@snow是对的,谢谢:

conn = sqlite3.connect("Rain.db")
c = conn.cursor()
address = c.execute('select Address from NNDATA where CPID in (select cpids from TEAM)').fetchall()
nn_mag = c.execute('select NeuralMagnitude from NNDATA where CPID in (select cpids from TEAM)').fetchall()
conn.close()