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
Si usa psql, puede escribir:
/d
http://www.postgresql.org/docs/9.1/static/app-psql.html
Si está ejecutando SQL, puede escribir:
SELECT * FROM tables;
http://www.postgresql.org/docs/current/interactive/information-schema.html
Si desea estadísticas sobre su uso, puede escribir:
SELECT * FROM pg_stat_user_tables;
http://www.postgresql.org/docs/current/interactive/monitoring-stats.html
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()