Python&Sqlite:由于语法错误而无法执行查询

问题描述:

我有一个充满东西的sqlite数据库,而且我正在编写代码来搜索并提取我想要的数据。这里就是我撞上了麻烦:Python&Sqlite:由于语法错误而无法执行查询

conn = sqlite3.connect("ensembl.db") 
cur = conn.cursor() 
... 
cur.execute('SELECT b.chr,(b.start-e.start) as StartD, (b.end-e.end) as EndD,b.tcon,b.tname,b.gname FROM ensembl e blast b WHERE b.tcon=? AND b.tname=e.tname AND b.gname=e.gname AND b.chr=e.chr',tcon) 
     print cur.fetchone() 

这将返回错误:

我不知道这个语法错误是什么,Python是指 - 我已经做了类似的查询(授予,并不十分复杂),以前在sqlite & python,他们已经工作。我尝试过其他各种方法,但似乎没有任何工作......我错过了一些非常简单的事情吗?

另外,另一个问题 - 一旦我得到这个工作,单独从结果中提取列的最佳方法是什么?我之前使用过cur.fetchone(),并将它分配给一个变量,只返回一个查询,但不知道它是否适用于返回多个事物的查询。

+0

您可能会考虑删除python标签。你有一个SQL语法问题。 – 2013-02-28 22:28:14

+0

请为您的第二个问题另外提问。 – 2013-02-28 22:29:06

你需要用英文逗号分隔的FROM -section表:

[..] FROM ensembl e, blast b [..] 

+0

Derp。不知怎的,我错过了。感谢您指出。 – Joe 2013-02-28 22:33:07

要提取colum,可以将lambda函数映射到第一列,map(lambda x:x [1],listoflists)列表,即map(lamda x:x [0],listoflist)第二等

你甚至可以创建一个lambda函数,这样做,即

extractor = lambda i,l : map(lambda x: x[i],l) 

,并使用

extractor(i,listofLists) 

获得第i列的列表。