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

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

我有一个数据列表,比如

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

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

  1. [PLACE],[NAME],[DETAILS]

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

  1. //using pymysql
  2. cur = conn.cursor()
  3. cur.executemany("""
  4. INSERT INTO
  5. myTable
  6. (place, name, details)
  7. VALUES
  8. (%s, %s, %s)
  9. """, infoarray)
  10. db.commit()
  11. cur.close()
  12. conn.close()

错误是“typeerror:不是所有参数在字符串格式化过程中都转换了”,这意味着我的格式是错误的。我对python比较陌生,所以我非常熟悉使用pymysql的细微差别。

wn9m85ua

wn9m85ua1#

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

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

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

相关问题