2016-07-27 3 views
0

私はPeeweeを使用するプログラムの基本的なGUIを書いています。 guiでは、データベースに存在するすべてのテーブルを表示したいと思います。私は何とかpeewee/postgresの既存のテーブルをすべて照会できますか?

既存のすべてのテーブルの名前を取得する方法はありますか?

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

私はこれが役に立てば幸い:、スキーマ内のテーブルのリストを取得し、あなたの接続とカーソルが確立されていることを確認し、次のことを試してみ

+1

すでに接続が確立している場合は、 'SELECT table_name FROM information_schema.tables WHERE table_schema = 'public''を実行してスキーマ内のテーブル名を取得してください。それは1要素タプルのリストを返すべきです。 – Abdou

答えて

4

ピーウィースキーマ次のタイプの情報のためのPostgres、MySQLとSQLiteのをイントロスペクトする能力を有する。

  • テーブル名
  • カラム(名前、データタイプ、NULL?主キー?テーブル)
  • 主キー(列(複数可))
  • 外部キー(列、DESTテーブル、destの列、テーブル)
  • インデックス(名前は、SQL *、列、ユニークな?テーブル)

あなたはDatabaseクラスに次のメソッドを使用して、このメタデータを取得することができます

だから、代わりに自分でカーソルを使用して、いくつかのSQLを書くだけ実行します。

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

さらに狂気のために、実際に既存のデータベース・スキーマからピーウィーモデルクラスを生成することができますreflectionモジュールを、チェックしてください。

0

+0

これはまさに私が探していたものです、ありがとう! :) – handris

+0

これは本当にPeeweeでこれを行うための最善の方法ではありません。 "database.get_tables()"関数を使うほうがずっと良いでしょう。 – coleifer

+0

@coleifer私は答えの変化を理解していますが、下垂体には何がありますか? – Abdou

関連する問題