0

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 ")

输出是:

1   100

它不打印idsno即表格的第一行

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

请帮忙

4

4 回答 4

1

ID并且sno不是数据,它们是表结构(列名)的一部分。

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

connection = sqllite3.connect('test.sqlite')
cursor = connection.execute('select * from abc')
names = list(map(lambda x: x[0], cursor.description))
于 2013-09-08T00:16:08.800 回答
1

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

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

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

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

于 2013-09-08T00:16:52.720 回答
0

If you want to obtain details on the table you can use the following statement

PRAGMA table_info('[your table name]')

This will return a list of tuple with each tuple containing informations about a column

You will still have to add it to the data collected using the SELECT statement

于 2013-09-08T07:59:21.707 回答
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
于 2013-09-08T12:04:45.607 回答