2012-05-15 3 views

ответ

1

Если вы используете 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

2

Речь идет об использовании psycopg2 питона, чтобы делать вещи с Postgres. Вот две удобные функции:

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 
+3

хороший ответ за неправильный вопрос. –

22

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',)] 
+1

Как мне попасть в массив formoat? – ihue

20

Это сделал трюк для меня:

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

Поблагодарите kalu за то, что он точно и универсален. – peter