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(),并将它分配给一个变量,只返回一个查询,但不知道它是否适用于返回多个事物的查询。
答
你需要用英文逗号分隔的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列的列表。
您可能会考虑删除python标签。你有一个SQL语法问题。 – 2013-02-28 22:28:14
请为您的第二个问题另外提问。 – 2013-02-28 22:29:06