我可以以某种方式查询peewee / postgres中的所有现有表吗?

时间:2016-07-27 17:43:00

标签: python peewee

我正在为一个使用Peewee的程序写一个基本的gui。在gui中,我想显示我数据库中存在的所有表。

有没有办法获取所有现有表的名称,比如说在列表中?

2 个答案:

答案 0 :(得分:8)

Peewee能够针对以下类型的架构信息反省Postgres,MySQL和SQLite:

  • 表名
  • 列(名称,数据类型,空?,主键?,表)
  • 主键(列)
  • 外键(列,目标表,目标列,表)
  • 索引(名称,sql *,列,唯一?,表)

您可以使用Database类上的以下方法获取此元数据:

因此,不要使用游标并自己编写一些SQL,而是执行:

db = PostgresqlDatabase('my_db')
tables = db.get_tables()

要想更加疯狂,请查看reflection模块,该模块实际上可以从现有数据库模式生成Peewee模型类。

答案 1 :(得分:0)

要获取架构中的表列表,请确保已建立连接和游标并尝试以下操作:

cursor.execute("SELECT table_name FROM information_schema.tables WHERE table_schema='public'")
myables = cursor.fetchall()
mytables = [x[0] for x in mytables]

我希望这会有所帮助。