将2d数组的前3个元素插入mysql数据库

bgibtngc  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(319)

我有一个数据列表,比如

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的细微差别。

0pizxfdo

0pizxfdo1#

这是因为您正在格式化查询中的3个值,但每个arrayitem传递的元素多于3个。
试着改变你的习惯 executemany 呼叫:

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

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

相关问题