我想知道是否有一种方法可以从sqlite3表中以编程方式进行选择,并获得不带标头的结果集。我找到了几个相关的问题here和here,通过调用.headers OFF
来解决问题,但是这个选项似乎只适用于命令行sqlite客户端。作为参考,这是我的python查询代码(少了一些异常处理):
con = lite.connect('my_db.sqlite')
sql = 'SELECT * FROM some_table'
cur = execute(sql, con)
rows = cur.fetchall()
然后rows
的值变为
[
(100, 102460, 18994),
(200, 102460, 13056),
(300, 102460, 10784),
(400, 102460, 9153),
(u'sample_size', u'total_tok', u'unknown_tok_mean')
]
注意最后一项是sqlite返回的标头。这只会不时出现(当返回很多行时往往存在)。我需要一种方法来控制是否返回标题 - 只要结果是一致,两种方式都可以。
答案 0 :(得分:3)
不,最后一行是从表中返回的数据。选择将从不包含行数据中的列标题。
该信息 可用,但作为游标上的.description
属性,永远不会出现在.fetchall()
的结果中。
换句话说,其他东西会将这些数据插入到您的表中,而SELECT
只是返回该信息。
命令行客户端所做的是为您格式化结果,如果这样配置,它将添加标题信息,但这不是SELECT
语句本身的一部分。