列出数据库的表

时间:2013-08-02 10:38:46

标签: python sqlite

我想列出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

那我的代码出了什么问题?

1 个答案:

答案 0 :(得分: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查询中。