2016-07-27 76 views
0

我正在为使用Peewee的程序编写一个基本的gui。在gui中,我想显示我的数据库中存在的所有表。我可以以某种方式查询peewee/postgres中的所有现有表吗?

是否有任何方法可以获取所有现有表的名称,可以在列表中说出来?

+1

如果您已经建立了连接,请运行'SELECT table_name FROM information_schema.tables WHERE table_schema ='public''来获取模式中的表名。这应该返回一个元素元组的列表。 – Abdou

回答

4

Peewee具有内省的Postgres,MySQL和SQLite的以下类型的模式信息的能力:

  • 表名
  • 列(名,数据类型,空?,主键?表)
  • 主键(列(S))
  • 外键(列,DEST表,DEST列,表)
  • 指数(名称,SQL *,列,唯一?,表)

可以使用在Database类以下方法得到这个元数据:

因此,而不是使用游标并编写一些SQL自己,只是做:

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

对于更加疯狂,检查出reflection模块,这实际上可以从现有的数据库模式产生Peewee模型类。

0

要获取表的列表模式中的,请确保你已经建立的连接和光标和尝试以下操作:

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

我希望这有助于。

+0

这正是我正在寻找的,谢谢! :) – handris

+0

这实在不是与Peewee做到这一点的最佳方式。更好的办法是使用“database.get_tables()”函数。 – coleifer

+0

@coleifer我明白答案的变化,但是downvote有什么用? – Abdou

相关问题