我试图在python脚本中向sqlite数据库写一个简单的查询。为了测试我的参数是否正确,我尝试从ipython命令行运行查询。它看起来像这样:
import sqlite3
db = 'G:\path\to\db\file.sqlite'
conn = sqlite3.connect(db)
results = conn.execute('SELECT * FROM studies').fetchall()
由于某种原因,我的结果完全空白。然后我尝试了另一个测试查询:
results = conn.execute('SELECT id FROM studies').fetchall()
哪个正确返回。我发现星号[错误,请参阅下面的第二次更新]存在问题,因此我尝试从默认python命令行查询“ SELECT * FROM Studies”查询。瞧,它正确返回了。我尝试了所有正常的方法来使星号转义,只有各种各样的错误消息才能解决。有什么方法可以在IPython中运行此查询吗?
编辑:对不起,我错误地认为IronPython和IPython是相同的。我的意思是IPython命令行,而不是IronPython框架。
EDIT2:好的,事实证明星号确实可以正常工作,如以下成功查询所示:
'SELECT COUNT(*) FROM studies'
从这里发布的建议中可以看出,尝试返回具有多个字段的记录会导致错误结果,即:
'SELECT field1,field2 FROM studies'
仍然导致记录被返回。我相应地更改了问题的标题。
最佳答案
这是SQL。 IronPython与查询的处理几乎没有关系。您是否使用了不寻常的字符编码? (即不是UTF-8或ASCII)?
如果您SELECT id,fieldname,fieldname FROM studies
会发生什么(换句话说,模拟“ *”的作用。)
关于python - 将查询提交到sqlite时,为什么IPython无法返回具有多个字段的记录?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1133604/