我有一个包含数据的列表,例如
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的细微差别非常熟悉。
答案 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