es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo insertar múltiples filas en PostgreSQL usando Python

Mi base de datos tiene las siguientes columnas: id, name, group, timesamp, totaltime, errorcode.

Intento insertar la siguiente lista de datos en la base de datos:

data = [
        {"name":"nombremuestra", "group":"grupomuestra", "timestamp":muestra_de_tiempo,
            "totaltime":tiempo_total_muestra, "errorcode":codigo_error_muestra},
        {"name":"nombremuestra", "group":"grupomuestra", "timestamp":muestra_de_tiempo,
            "totaltime":tiempo_total_muestra, "errorcode":codigo_error_muestra},
        {"name":"nombremuestra", "group":"grupomuestra", "timestamp":muestra_de_tiempo,
            "totaltime":tiempo_total_muestra, "errorcode":codigo_error_muestra},
        {"name":"nombremuestra", "group":"grupomuestra", "timestamp":muestra_de_tiempo,
            "totaltime":tiempo_total_muestra, "errorcode":codigo_error_muestra}
    ]

Cuál sería la mejor (más corta) forma de insertar esta lista de datos en la base de datos. Mi preferencia es insertar todas las filas juntas.

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Para insertar todas las filas juntas, puedes utilizar el comando SQL INSERT con la palabra clave VALUES seguida de una lista de tuplas que contengan los datos de cada fila. Aquí tienes un ejemplo utilizando la lista de datos de tu pregunta:

    import psycopg2
    
    # Conectar a la base de datos
    conn = psycopg2.connect(database="tubasededatos", user="tunombredeusuario", password="tupassword")
    
    # Crear un cursor
    cur = conn.cursor()
    
    # Definir la lista de datos
    data = [
            {"name": "nombreejemplo", "group": "grupoejemplo", "timestamp": "marcatiempo",
                "totaltime": "tiempototal", "errorcode": "codigodeerror"},
            {"name": "nombreejemplo", "group": "grupoejemplo", "timestamp": "marcatiempo",
                "totaltime": "tiempototal", "errorcode": "codigodeerror"},
            {"name": "nombreejemplo", "group": "grupoejemplo", "timestamp": "marcatiempo",
                "totaltime": "tiempototal", "errorcode": "codigodeerror"},
            {"name": "nombreejemplo", "group": "grupoejemplo", "timestamp": "marcatiempo",
                "totaltime": "tiempototal", "errorcode": "codigodeerror"}
        ]
    
    # Definir la consulta SQL con espacios reservados para los valores de datos
    query = "INSERT INTO tablatuya (name, group, timestamp, totaltime, errorcode) VALUES (%s, %s, %s, %s, %s)"
    
    # Crear una lista de tuplas que contengan los datos de cada fila
    values = [(row["name"], row["group"], row["timestamp"], row["totaltime"], row["errorcode"]) for row in data]
    
    # Ejecutar la consulta con la lista de tuplas como entrada
    cur.executemany(query, values)
    
    # Confirmar los cambios en la base de datos
    conn.commit()
    
    # Cerrar el cursor y la conexión
    cur.close()
    conn.close()
    

    Ten en cuenta que debes reemplazar “tubasededatos”, “tunombredeusuario”, “tupassword” y “tablatuya” con los nombres reales de tu base de datos, nombre de usuario, contraseña y tabla, respectivamente.

    Además, asegúrate de que los nombres de columna en la consulta coincidan exactamente con los nombres de columna de tu tabla (incluyendo mayúsculas y minúsculas).

Comments are closed.