web-dev-qa-db-ja.com

psycopg2を使用してpostgresでテーブルを取得するにはどうすればよいですか?

誰かが現在のデータベースのテーブルを取得する方法を説明してもらえますか?

私はpostgresql-8.4 psycopg2を使用しています。

46
user1395784

これは私のためにトリックをしました:

cursor.execute("""SELECT table_name FROM information_schema.tables
       WHERE table_schema = 'public'""")
for table in cursor.fetchall():
    print(table)
54
kalu

pg_classには、必要なすべての情報が格納されます。

以下のクエリを実行すると、ユーザー定義のテーブルがリスト内のタプルとして返されます

conn = psycopg2.connect(conn_string)
cursor = conn.cursor()
cursor.execute("select relname from pg_class where relkind='r' and relname !~ '^(pg_|sql_)';")
print cursor.fetchall()

出力:

[('table1',), ('table2',), ('table3',)]
27
Sravan

問題は、Pythonのpsycopg2を使用してpostgresで処理することです。以下に2つの便利な機能を示します。

def table_exists(con, table_str):

    exists = False
    try:
        cur = con.cursor()
        cur.execute("select exists(select relname from pg_class where relname='" + table_str + "')")
        exists = cur.fetchone()[0]
        print exists
        cur.close()
    except psycopg2.Error as e:
        print e
    return exists

def get_table_col_names(con, table_str):

    col_names = []
    try:
        cur = con.cursor()
        cur.execute("select * from " + table_str + " LIMIT 0")
        for desc in cur.description:
            col_names.append(desc[0])        
        cur.close()
    except psycopg2.Error as e:
        print e

    return col_names
4
rirwin

Psqlを使用する場合、次のように入力できます。

\d

http://www.postgresql.org/docs/9.1/static/app-psql.html

SQLを実行している場合、次のように入力できます。

SELECT * FROM tables;

http://www.postgresql.org/docs/current/interactive/information-schema.html

使用状況に関する統計が必要な場合は、次のように入力できます。

SELECT * FROM pg_stat_user_tables;

http://www.postgresql.org/docs/current/interactive/monitoring-stats.html

1
kgrittn