关于python:列出数据库的表

List the tables of the database

本问题已经有最佳答案,请猛点这里访问。

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

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

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

1
2
3
4
The table is foo1
The table is foo2
The table is foo3

但如果我将代码修改为:

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

则输出为:

1
2
(foo1,)
The table is foo2

我的代码有什么问题?


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

1
2
3
4
5
6
7
8
9
10
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])

印刷品

1
2
3
foo1
foo2
foo3

注意,要排除索引,一定要将WHERE type='table'添加到SQL查询中。