从sqlite中无头部选择

2 投票
1 回答
3337 浏览
提问于 2025-04-17 17:52

我在想有没有办法通过编程的方式从sqlite3表中选择数据,并且得到的结果集是没有表头的。我找到了一些相关的问题,解决方法是调用 .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返回的表头。这个表头并不是每次都有(通常在返回很多行数据的时候会出现)。我需要一种方法来控制是否返回表头——无论哪种方式都可以,只要结果是 一致的

1 个回答

3

不,这最后一行是从表格中返回的数据。一个选择操作(select)绝对不会把列标题包含在行数据里。

这些信息可以获取的,但它作为一个.description属性存在于游标中,而不是在.fetchall()的结果里。

换句话说,是其他地方把这些数据插入到你的表格里的,而SELECT只是把这些信息返回给你。

命令行客户端的作用是为你格式化结果,如果配置得当,它会添加标题信息,但这并不是SELECT语句本身的行为。

撰写回答