首页 > 解决方案 > Python 'float64' 无法转换为 MySQL 类型

问题描述

我正在尝试使用 python 脚本将一些数据存储在 MYSQL 工作台数据库中,但是当我尝试在数据库中插入 (anomaly_low, anomaly_medium, anomaly_high) 时出现以下错误。

Failed processing format-parameters; Python 'float64' cannot be converted to a MySQL type.

实际上,我正在从我的数据库中提取一些数据并将它们作为函数的参数提供。并且,将函数返回的值用于另一个查询。我的代码是:

 import numpy as np
 import matplotlib
 import skfuzzy as fuzz
 from skfuzzy import control as ctrl
 from matplotlib import pyplot as plt
 import mysql.connector
 from mysql.connector import Error
 from mysql.connector import errorcode
 import time
 import datetime

 try:
    connection = mysql.connector.connect(host='1111',
                                       database='x',
                                       user='x',
                                       password='xx')
cursor = connection.cursor(buffered=True)
anomaly = (a.compute_anomaly(85, 5))
print(anomaly) 
test = str(a.get_anomaly(anomaly))[1:-1]
print(test)
t = test.split(',')
anomaly_low = t[0]
anomaly_medium = t[1]
anomaly_high = t[2]
print (anomaly_low )
print (anomaly_medium ) 
print (anomaly_high ) 
ts = time.time()
timestamp = datetime.datetime.fromtimestamp(ts).strftime('%Y-%m-%d 
 %H:%M:%S')


 #insert data to fuzzy_anomaly
sql_anomaly = "INSERT INTO fuzzy_anomaly(anomaly,anomaly_low, 
anomaly_medium, anomaly_high,timestamp)  VALUES (%s,%s,%s,%s,%s)"

input = (anomaly, anomaly_low, anomaly_medium, anomaly_high,timestamp)
cursor.execute(sql_anomaly , input, multi=True)
connection.commit()

print("1 record inserted, ID:", cursor.lastrowid)

except mysql.connector.Error as error :
    print("Failed to update record to database: {}".format(error))
    connection.rollback()
finally:
    #closing database connection.
    if(connection.is_connected()):
        connection.close()
        print("MySQL connection is closed")

这些是我数据库中的字段/列名称。我正在尝试将anomaly, anomaly_low, anomaly_medium, anomaly_high,timestamp数据插入 MYSQL。

在此处输入图像描述

但是,当我手动为compute_anomaly(arg1, arg2)函数提供参数并删除第一个查询 ( input_fuzzy) 时,错误就消失了。任何想法?提前致谢。

标签: pythonmysql

解决方案


推荐阅读