将2D数组的前3个元素插入MySql数据库

时间:2018-11-12 18:49:08

标签: python mysql append pymysql

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

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

我只想将前3个条目添加到具有以下格式的数据库表中

[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:不是在格式化字符串时转换了所有参数” 这是假定的意思是我的格式错误。我对python比较陌生,因此我对使用pymysql的细微差别非常熟悉。

1 个答案:

答案 0 :(得分:0)

之所以会这样,是因为您在查询中设置了3个值的格式,但是每个arra变量传递了3个以上的元素。

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

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

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