Python Sqlite,无法打印第一行

时间:2013-09-07 23:32:36

标签: python sqlite xlsx

Sqlite表结构:

id  sno
1   100
2   200
3   300
4   400

conn=sqlite3.connect('test.sqlite')
c=conn.cursor()
c.execute("select * from abc")
mysel=c.execute("select * from abc where [id] = 1 ")

out put是:

1   100

不打印 id sno ,即表格的第一行

我如何打印第一行表格以及任何选择

请帮助

4 个答案:

答案 0 :(得分:1)

IDsno不是数据,它们是表结构的一部分(列名称)。

如果您想获取列的名称,您需要执行类似

的操作
connection = sqllite3.connect('test.sqlite')
cursor = connection.execute('select * from abc')
names = list(map(lambda x: x[0], cursor.description))

答案 1 :(得分:1)

实际上没有包含列名的“第一行”,这只是命令行客户端默认打印出来以帮助您读取返回的记录。

符合dbapi2标准的游标有一个属性description,它是一个元组列表,包含有关上一个查询返回的数据的信息。每个元组的第一个元素将是列的名称,因此要打印列名,您可以执行类似的操作:

c.execute("select * from abc")
print(tuple(d[0] for d in c.description))
for row in c:
    print(row)

这将只打印名称和记录的元组表示。

答案 2 :(得分:0)

如果您想获得表格的详细信息,可以使用以下声明

PRAGMA table_info('[your table name]')

这将返回一个元组列表,每个元组包含有关列的信息

您仍然需要将其添加到使用SELECT语句

收集的数据中

答案 3 :(得分:0)

当您撰写... WHERE id = 1时,您只能获得该特定记录。

如果你想获得第一条记录,你必须告诉SQLite你想要它:

SELECT id, sno FROM abc WHERE id = 'id'
UNION ALL
SELECT id, sno FROM abc WHERE id = 1

当你已经知道这个特定子查询返回的内容时,你甚至不需要费心去搜索表(因此不需要在表中实际存储列名):

SELECT 'id', 'sno'
UNION ALL
SELECT id, sno FROM abc WHERE id = 1