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 actualizar el valor de una columna en una tabla de Postgres desde Python basándose en una condición.

Tengo una tabla de postgres llamada (Alpha) con los siguientes valores

Alpha

ID  Exp_Date     Active_Status
1   7-12-2021    active
2   8-12-2021    active
3   15-12-2021   active
4   15-12-2021   active
5   11-12-2021   expired
6   1-12-2021    expired
7   6-12-2021    expired

Mi cadena de conexión

postgres_str = f'postgresql://{username}:{password}@{host}:{port}/{dbname}'
# Crear la conexión y el cursor
rds_conn = psycopg2.connect(postgres_str)
rds_cur = rds_conn.cursor()

Deseo actualizar el Active_Status a expired basado en dos condiciones

  1. si Exp_date es menor que la fecha del sistema (fecha de hoy)
  2. si Active_Status ='active'

Salida esperada

ID  Exp_Date     Active_Status
1   7-12-2021    expired
2   8-12-2021    expired
3   15-12-2021   active
4   15-12-2021   active
5   11-12-2021   expired
6   1-12-2021    expired
7   6-12-2021    expired

¿Cómo se puede escribir la consulta de actualización desde Python para postgres?

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Para actualizar la columna Active_Status en la tabla Alpha basándose en las condiciones dadas, puede utilizar la siguiente consulta SQL:

    UPDATE Alpha
    SET Active_Status = 'expired'
    WHERE Exp_Date < CURRENT_DATE AND Active_Status = 'active';
    

    Para ejecutar esta consulta desde Python utilizando la biblioteca psycopg2, puede utilizar el método execute() del objeto cursor de la siguiente manera:

    import psycopg2
    
    # Defina los parámetros de conexión
    username = 'your_username'
    password = 'your_password'
    host = 'your_host'
    port = 'your_port'
    dbname = 'your_database_name'
    
    # Construya la cadena de conexión
    postgres_str = f'postgresql://{username}:{password}@{host}:{port}/{dbname}'
    
    # Conéctese a la base de datos y cree un cursor
    conn = psycopg2.connect(postgres_str)
    cur = conn.cursor()
    
    # Defina la consulta SQL
    query = "UPDATE Alpha SET Active_Status = 'expired' WHERE Exp_Date < CURRENT_DATE AND Active_Status = 'active'"
    
    # Ejecute la consulta
    cur.execute(query)
    
    # Confirme los cambios en la base de datos
    conn.commit()
    
    # Cierre el cursor y la conexión
    cur.close()
    conn.close()
    

    Esto actualizará la columna Active_Status en la tabla Alpha según las condiciones dadas.

Comments are closed.