Python:将数组插入 Mysql 时出现 ValueError

Python: ValueError when inserting array into Mysql

我正在尝试更新 Mysql 数据库中的多行。 通过阅读最有效的解决方案似乎是使用 ON DUPLICATE KEY UPDATE 语句进行批量插入。 我从 numpy 构建了以下数组:

   update_list = [['11259761' '24' '15.169291741233783']
     ['15293357' '82' '0.5716360249451222']
     ['18833226' '56' '7.073284312907512']
     ...
     ['75212792' '55' '0.31338063342346445']
     ['75213202' '62' '0.1843318978715103']
     ['8295513' '45' '3.9280856957929116']]

接下来,我尝试将列表插入 mysql

con = pymysql.connect('connection settings here')
with con:
        cursor = con.cursor()
        sql = ("INSERT INTO properties (id, closest_point, distance_from_closest_point) VALUES (%s, %s, %s)"
                        "ON DUPLICATE KEY UPDATE closest_point=VALUES(closest_point), distance_from_closest_point=VALUES(distance_from_closest_point)")
        cursor.executemany(sql, update_list)
        con.commit()
        print("done")

此代码输出以下错误:

ValueError: The truth value of an array with more than one element is ambiguous. Use a.any() or a.all()

知道我做错了什么吗?

尝试从以下位置编辑代码:

cursor.executemany(sql, update_list)

至:

cursor.executemany(sql, update_list.all())

你的 update_list 需要是一个元组的元组,所以你只需要在调用 cursor.executemany 之前将它转换成那个元组。示例如下:

update_list = tuple([tuple(row) for row in update_list])
con = pymysql.connect('connection settings here')
with con:
        cursor = con.cursor()
        sql = ("INSERT INTO properties (id, closest_point, distance_from_closest_point) VALUES (%s, %s, %s)"
                        "ON DUPLICATE KEY UPDATE closest_point=VALUES(closest_point), distance_from_closest_point=VALUES(distance_from_closest_point)")
        cursor.executemany(sql, update_list)
        con.commit()
        print("done")