python psycopg2 postgresql-8.4

python - ¿Cómo obtengo tablas en postgres usando psycopg2?



postgresql-8.4 (5)

Esto hizo el truco para mí:

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

¿Alguien puede explicar cómo puedo obtener las tablas en la base de datos actual?

Estoy usando postgresql-8.4 psycopg2.


La pregunta es acerca de usar psycopg2 de python para hacer cosas con postgres. Aquí hay dos funciones útiles:

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 almacena toda la información requerida.

la ejecución de la consulta siguiente devolverá las tablas definidas por el usuario como una tupla en una lista

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()

salida:

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


puedes usar este código para python 3

import psycopg2 conn=psycopg2.connect(database="your_database",user="postgres", password="", host="127.0.0.1", port="5432") cur = conn.cursor() cur.execute("select * from your_table") rows = cur.fetchall() conn.close()