我想列出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
那我的代码出了什么问题?
答案 0 :(得分:2)
您的第一种方法应该有效(假设FTOM
为FROM
):
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查询中。