1

I am trying to update PostgresDB with psycopg2 with below query, it is executing successfully but sometimes it is not updating the record (sometimes updating and sometimes not). Can someone help me?

Below code printed 'Order status updated' but returned rowcount =0.

def update_order_status(order_id, executed_at, order_executed, exec_completed, conn_prod):
    
    rowcount = 0
    sql = """UPDATE orders SET status = %s, executed_type = %s, executed_at= %s 
            WHERE order_id = %s"""
    try:    
        cur = conn_prod.cursor()
        cur.execute(sql, (order_executed, exec_completed, executed_at, order_id))
        conn_prod.commit()
        rowcount = cur.rowcount
        cur.close()
        print('Order status updated')
        return rowcount
    except Exception as e:
        print(e)
        conn_prod.rollback()
        return rowcount
        
count = update_order_status('1234', '2021-10-26 13:30:18+00', 'COMPLETED', 'FULL', conn_prod)
anilraj
  • 53
  • 7

1 Answers1

0

Just move the cur.close() to finally block

def update_order_status(order_id, executed_at, order_executed, exec_completed, conn_prod):
    
    rowcount = 0
    sql = """UPDATE orders SET status = %s, executed_type = %s, executed_at= %s 
            WHERE order_id = %s"""
    cur = conn_prod.cursor()
    try:    
        cur.execute(sql, (order_executed, exec_completed, executed_at, order_id))
        conn_prod.commit()
        rowcount = cur.rowcount
        print('Order status updated')
    except Exception as e:
        print(e)
        conn_prod.rollback()
    finally:
        cur.close()
    return rowcount 
        
count = update_order_status('1234', '2021-10-26 13:30:18+00', 'COMPLETED', 'FULL', conn_prod)
Anand Tripathi
  • 14,556
  • 1
  • 47
  • 52