3

我想列出一个 sqlite3 数据库的所有表,但它不起作用。让我们想象一下,在 ma 数据库中,我有以下表格:foo1、foo2、foo3……然后,使用以下代码:

cur.execute("SELECT name FROM sqlite_master")
for table in cur:
     print("The table is", table[0])

我有这个输出:The table is foo1,而我想要这个:

The table is foo1
The table is foo2
The table is foo3
…

但是,如果我将代码修改为:

cur.execute("SELECT name FROM sqlite_master")
print(cur.fetchone())
for table in cur:
     print("The table is", table[0]

然后输出是:

(foo1,)
The table is foo2

那么我的代码有什么问题?

4

1 回答 1

2

您的第一种方法应该有效(假设FTOMFROM):

import sqlite3
connection = sqlite3.connect(':memory:')
cur = connection.cursor()
cur.execute('CREATE TABLE foo1 (bar INTEGER, baz TIMESTAMP)')
cur.execute('CREATE TABLE foo2 (bar INTEGER, baz TIMESTAMP)')
cur.execute('CREATE TABLE foo3 (bar INTEGER, baz TIMESTAMP)')
cur.execute(
    "SELECT name FROM sqlite_master")
for table in cur:
    print(table[0])

印刷

foo1
foo2
foo3

注意,要排除索引,请务必添加WHERE type='table'到 SQL 查询。

于 2013-08-02T10:48:30.927 回答