En este artículo, discutiremos cómo usar psycopg2 para devolver valores similares a los de un diccionario.
Podemos devolver valores similares a los de un diccionario usando el controlador psycopg2 PostgreSQL con y sin usar el módulo de extras y ambos se discutirán en este artículo. psycopg.extras proporciona obsequios misceláneos para Psycopg2. Contiene funciones auxiliares y clases hasta que se encuentra un lugar mejor en la distribución.
Sin usar psycopg. módulo de extras:
Primero importe los paquetes requeridos y forme una conexión a la base de datos PostgreSQL usando el método psycopg2.connect() . y un cursor con el uso de la clase cursor(), después de eso ejecutamos la instrucción select SQL para recuperar filas de la tabla. El método cursor.fetchall() da la salida como tuplas, usamos el corte para obtener valores e imprimirlos en forma de diccionario.
Ejemplo: use psycopg2 para devolver valores similares a los de un diccionario
Python3
import psycopg2 conn = psycopg2.connect( database="codes", user='postgres', password='pass', host='127.0.0.1', port='5432' ) conn.autocommit = True cursor = conn.cursor() sql = '''CREATE TABLE continent_codes(code varchar(3), name char(20), concatenated_column varchar(30));''' cursor.execute(sql) sql2 = '''COPY continent_codes(code,name, concatenated_column) FROM '/private/tmp/continent_codes.csv' DELIMITER ',' CSV HEADER;''' cursor.execute(sql2) sql3 = '''select * from continent_codes;''' cursor.execute(sql3) results = cursor.fetchall() for row in results: print("code: {}".format(row[0])) print("name: {}".format(row[1])) print("concatenated_column: {}".format(row[2])) conn.commit() conn.close()
Producción :
code: AF name: Africa concatenated_column: AFAfrica code: NA name: North America concatenated_column: NANorth America code: OC name: Oceania concatenated_column: OCOceania code: AN name: Antartica concatenated_column: ANAntartica code: AS name: Asia concatenated_column: ASAsia code: EU name: Europe concatenated_column: EUEurope code: SA name: South America concatenated_column: SASouth America
Usando el módulo psycopg.extras
RealDictCursor es un cursor que utiliza un dictado real como tipo base para las filas. Este cursor no permite la indexación normal para obtener datos. los datos solo se pueden obtener con la ayuda de las claves de los nombres de las columnas de la tabla.
Sintaxis:
cursor = conn.cursor(cursor_factory = psycopg2.extras.RealDictCursor)
Las subclases de cursor se pasan como argumento cursor_factory a connect() para que el método cursor() de la conexión genere objetos de esta clase. cursor_factory es un argumento en la clase conn.cursor().
Sintaxis:
psycopg2.extras.RealDictCursor(*args, **kwargs)
Este cursor usó realdict como el tipo base para las filas.
Ejemplo: use psycopg2 para devolver valores similares a los de un diccionario
Python3
import psycopg2.extras conn = psycopg2.connect( database="codes", user='postgres', password='pass', host='127.0.0.1', port='5432' ) conn.autocommit = True cursor = conn.cursor(cursor_factory=psycopg2.extras.RealDictCursor) sql = '''CREATE TABLE continent_codes(code varchar(3), name char(20), concatenated_column varchar(30));''' cursor.execute(sql) sql2 = '''COPY continent_codes(code,name, concatenated_column) FROM '/private/tmp/continent_codes.csv' DELIMITER ',' CSV HEADER;''' cursor.execute(sql2) sql3 = '''select * from continent_codes;''' cursor.execute(sql3) results = cursor.fetchall() for row in results: print("code: {}".format(row['code'])) print("name: {}".format(row['name'])) print("concatenated_column: {}".format(row['concatenated_column'])) conn.commit() conn.close()
Producción:
code: AF name: Africa concatenated_column: AFAfrica code: NA name: North America concatenated_column: NANorth America code: OC name: Oceania concatenated_column: OCOceania code: AN name: Antartica concatenated_column: ANAntartica code: AS name: Asia concatenated_column: ASAsia code: EU name: Europe concatenated_column: EUEurope code: SA name: South America concatenated_column: SASouth America
Publicación traducida automáticamente
Artículo escrito por isitapol2002 y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA