update from python mysql insert mysql-connector-python

from - MySQL Connector/Python-inserte la variable python en la tabla MySQL



select from python (2)

Uno de los valores pasados ​​podría ser de tipo numpy.float64 que no reconoce el conector MySQL. Equípelo en un genuino float pitón al poblar el dict.

Estoy tratando de insertar una variable python en una tabla MySQL dentro de una secuencia de comandos python, pero no está funcionando. Aquí está mi código

add_results=("INSERT INTO account_cancel_predictions" "(account_id,21_day_probability,flagged)" "Values(%(account_id)s,%(21_day_probability)s,%(flagged)s)") data_result={ ''account_id'':result[1,0], ''21_day_probability'':result[1,1], ''flagged'':result[1,2] } cursor.execute(add_results,data_result) cnx.commit() cursor.close() cnx.close()

Esto obtiene el error

ProgrammingError: Failed processing pyformat-parameters; ''MySQLConverter'' object has no attribute ''_float64_to_mysql''

Sin embargo, cuando reemplazo el result[1,0] nombres de variable result[1,0] , result[1,1] y result[1,2] con sus valores numéricos reales, funciona. Sospecho que python está pasando los nombres de las variables reales en lugar de los valores que contienen. ¿Cómo puedo solucionar esto?


Suponiendo que está utilizando mysql.connector (creo que lo es), defina su propia clase de convertidor:

class NumpyMySQLConverter(mysql.connector.conversion.MySQLConverter): """ A mysql.connector Converter that handles Numpy types """ def _float32_to_mysql(self, value): return float(value) def _float64_to_mysql(self, value): return float(value) def _int32_to_mysql(self, value): return int(value) def _int64_to_mysql(self, value): return int(value) config = { ''user'' : ''user'', ''host'' : ''localhost'', ''password'': ''xxx'', ''database'': ''db1'' } conn = mysql.connector.connect(**config) conn.set_converter_class(NumpyMySQLConverter)