将二维数组的前 3 个元素插入 MySql 数据库

Insert first 3 elements of 2D array into MySql Database

我有一个包含数据的列表,例如

infoarray[['1.', 'Name1', 'details1, '...', '...', '....'], ['2.', 'Name2, 'details2', '...', '...', '...'], ['3.', 'Name3', 'details3', '...', '...', '...']...]

我只想将前 3 个条目添加到数据库 table 中,格式为

[PLACE],[NAME],[DETAILS]

应该比较简单。数据已经排序,我只需要将每个内部数组的前 3 个元素附加到我的数据库中。我尝试了以下代码,但出现错误。

//using pymysql

cur = conn.cursor()

cur.executemany("""
    INSERT INTO 
        myTable
        (place, name, details)
    VALUES
        (%s, %s, %s)
""", infoarray)
db.commit()

cur.close()
conn.close()

错误是"TypeError: not all arguments converted during string formatting" 这是假设意味着我的格式错误。我对 python 比较陌生,所以我非常熟悉使用 pymysql 的细微差别。

发生这种情况是因为您在查询中设置了 3 个值的格式,但每个数组项传递的元素超过 3 个。

尝试将您的 executemany 呼叫更改为:

cur.executemany("""
    INSERT INTO 
        myTable
        (place, name, details)
    VALUES
        (%s, %s, %s)
""", [a[:3] for a in infoarray])

这样您将只获得每个数组项中的前 3 个元素并将其传递给 executemany