Может кто-нибудь объяснить, как я могу получить таблицы в текущей базе данных?Как получить таблицы в postgres с помощью psycopg2?
Я использую postgresql-8.4 psycopg2.
Может кто-нибудь объяснить, как я могу получить таблицы в текущей базе данных?Как получить таблицы в postgres с помощью psycopg2?
Я использую postgresql-8.4 psycopg2.
Если вы используете 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
Речь идет об использовании 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
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',)]
Как мне попасть в массив formoat? – ihue
Это сделал трюк для меня:
cursor.execute("""SELECT table_name FROM information_schema.tables
WHERE table_schema = 'public'""")
for table in cursor.fetchall():
print(table)
Поблагодарите kalu за то, что он точно и универсален. – peter
хороший ответ за неправильный вопрос. –