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.

consulta de actualización python mysql.connector

Estoy haciendo un proyecto de web scraping y ahora estoy intentando almacenar mis datos en una base de datos MySQL (servidor remoto).
Estoy seguro de que la configuración de la base de datos está correcta, pero sigo obteniendo este error:

Traceback (most recent call last):
  File "C:**\main.py", line 14, in <module>
    cnx.commit()
File "C:**\mysql\connector\connection_cext.py", line 406, in commit
    self._cmysql.commit()
_mysql_connector.MySQLInterfaceError: Comandos fuera de sincronización; no se puede ejecutar este comando en este momento

Aquí está mi código (main.py):

import mysql.connector

cnx = mysql.connector.connect(user='XXXX', password='XXXXX',
                              host='XXXXXXXX',
                              database='sql4456946')
cursor = cnx.cursor()

maxID = ("SET @lastid = (SELECT MAX(`id`) FROM `stand`); "
         "UPDATE `stand` SET `price` = 9999 WHERE `id` = @lastid")
cursor.execute(maxID)
cnx.commit()
Tags:  , ,

Answer

  1. Avatar for davy.ai

    El error que estás recibiendo indica que hay un problema con la secuencia de comandos de MySQL que estás intentando ejecutar. Parece que el comando cursor.execute(maxID) está causando el problema, posiblemente debido a que un comando anterior no se ejecutó completamente o se cerró correctamente.

    Para resolver este problema, es posible que debas agregar una llamada a cursor.fetchall() antes del comando cursor.execute(maxID). Esto asegurará que cualquier resultado de comandos anteriores se procese completamente antes de ejecutar el siguiente comando.

    Aquí tienes una versión actualizada de tu código:

    import mysql.connector
    
    cnx = mysql.connector.connect(user='XXXX', password='XXXXX',
                                   host='XXXXXXXX',
                                   database='sql4456946')
    cursor = cnx.cursor()
    
    # Agrega esta línea para asegurarte de que los resultados anteriores se procesen completamente
    cursor.fetchall()
    
    maxID = ("SET @lastid = (SELECT MAX(`id`) FROM `stand`); "
             "UPDATE `stand` SET `price` = 9999 WHERE `id` = @lastid")
    cursor.execute(maxID)
    cnx.commit()
    

    Esto debería solucionar el problema, pero si el problema persiste, es posible que debas investigar más los comandos de MySQL que se están ejecutando y su secuencia, o analizar posibles problemas de conexión con el servidor remoto.

Comments are closed.