Psycopg2 – Devolver diccionario como valores

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

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *