Python Psycopg2 – Obtener ID de fila recién insertada

En este artículo vamos a ver cómo obtener el ID de la fila recién insertada usando pyscopg2 en Python

Establecer una conexión con el servidor PostgreSQL

Para establecer una conexión con el servidor PostgreSQL, haremos uso de la biblioteca pscopg2 en python. Puede instalar psycopg2 usando el siguiente comando:

pip install psycopg2

Después de instalar la biblioteca, se puede usar el siguiente código para crear una conexión con el servidor de la base de datos:

Python3

import psycopg2
  
  
def get_connection():
    try:
        return psycopg2.connect(
            database="postgres",
            user="postgres",
            password="password",
            host="127.0.0.1",
            port=5432,
        )
    except:
        return False
  
  
conn = get_connection()
  
if conn:
    print("Connection to the PostgreSQL established successfully.")
else:
    print("Connection to the PostgreSQL encountered and error.")

Ejecutar el código anterior producirá el siguiente resultado si las credenciales de la base de datos proporcionadas son correctas y la conexión se establece correctamente:

Conexión a PostgreSQL establecida con éxito.

Creación de tabla para demostración

Crearemos una tabla de demostración `usuario` para la comprensión de este artículo. Puede utilizar la siguiente consulta para generar la tabla `usuario` de muestra.

CREAR TABLA público.usuario (

user_id CLAVE PRIMARIA DE SERIE,

nombre_usuario VARCHAR(50) NO NULO,

correo electrónico VARCHAR(50) NO NULO

);

INSERTAR EN public.USER(user_name, email) VALUES (‘Amit Pathak’, ‘amit@xyz.com’);

INSERTAR EN public.USER(user_name, email) VALUES (‘Ashish Mysterio’, ‘ashish@xyz.com’);

INSERTAR EN public.USER(user_name, email) VALUES (‘Priyanka Pandey’, ‘priyanka@xyz.com’);

Después de ejecutar las consultas anteriores, la tabla `usuario` se ve así:

tabla de usuario (antes de ejecutar el código)

A continuación se muestra la implementación

Python3

# This program uses fetchone()
# to get the row ID of the latest
# entry in the table
  
import psycopg2
  
def get_connection():
    try:
        return psycopg2.connect(
            database="postgres",
            user="postgres",
            password="password",
            host="127.0.0.1",
            port=5432,
        )
    except:
        return False
  
# GET THE CONNECTION OBJECT
conn = get_connection()
  
# CREATE A CURSOR USING THE CONNECTION OBJECT
curr = conn.cursor()
  
# EXECUTE THE SQL QUERY
curr.execute('''
    INSERT INTO public.USER(user_name, email)
    VALUES ('Sudha Tiwari', 'sudha@xyz.com')
    RETURNING user_id;
''')
  
# FETCH THE LATEST USER ID USING THE CURSOR
data = curr.fetchone()
print("User ID of latest entry:", data[0])
  
# CLOSE THE CONNECTION
conn.close()

Producción:

User ID of latest entry: 4

En el ejemplo anterior, primero creamos un objeto de conexión psycopg2 y, usando este objeto, creamos un cursor para confirmar nuestra consulta. Ya tenemos 3 entradas en la tabla con ` user_id` como 1, 2 y 3 respectivamente. Para cualquier entrada nueva en la tabla, el campo ` user_id` se incrementará ya que es un campo de incremento automático por defecto. Entonces, el nuevo registro debería obtener un ` user_id` como 4. Esto es lo que podemos ver en la salida. La consulta utiliza una cláusula RETURNING adicional que devuelve el valor de columna deseado que funciona como cualquier devolución de llamada. Luego usamos el método fetchone() para obtener la respuesta de la última consulta ejecutada que proporciona la ID de fila requerida. La tabla `usuario` ahora tiene los siguientes registros:

tabla de usuario (después de ejecutar el código)

Publicación traducida automáticamente

Artículo escrito por apathak092 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 *