【问题标题】:Insert nested list into mysql database using Python使用 Python 将嵌套列表插入 mysql 数据库
【发布时间】:2020-02-06 19:18:20
【问题描述】:

我想在 mysql 数据库中插入一个嵌套列表。

通常,我们像这样向mysql插入一个列表数据:

list_data = ['Kate', 'apple']
sql = 'INSERT INTO table VALUES ('name', 'likes')'
cursor.execute(sql, list_data)

如果

list_data = ['Kate', ['apple', 'orange', 'banana']]

list_data = ['Kate', {'food': 'apple', 'sports': 'running'}]

我该怎么办? (我的意思是将python列表或dict保存为mysql中的字符串。)

【问题讨论】:

  • 也许您可以考虑将您的输入扁平化为列表? (想想 CSV 格式)。例如,list_data = ['Kate', {'food': 'apple', 'sports': 'running'}] 的最后一个示例可以转换为 input = ["Kate", "apple", "running"],其中列名是 NameFoodSports
  • 对于这个例子,我只想使用两列'name'和'likes',并希望整个字典 {'food': 'apple', 'sports': 'running'}在“喜欢”列中。
  • 如果将字典作为字符串传递会发生什么;即list_data = ['Kate', "{'food': 'apple', 'sports': 'running'}"](注意字典周围的引号)
  • 是的,我现在就是这样做的,而且效果很好。实际上我有很多这种数据要插入,所以我试图找到一种更直接的方法,而不是每次都将它们转换为字符串格式。

标签: python mysql mysql-python


【解决方案1】:

您可以在 Python 中使用 json.dumps 函数,试试下面的代码:

import json
list_data = ['Kate', json.dumps(['apple', 'orange', 'banana'])]
OR, list_data = ['Kate', json.dumps({'food': 'apple', 'sports': 'running'})]
sql = 'INSERT INTO table VALUES ('name', 'likes')'
cursor.execute(sql, list_data)

扁平化数据也是一个好主意,但这完全取决于您的数据库设计和要求。

希望这会有所帮助!

【讨论】:

  • 是的,这行得通。看来我们必须先将 list 或 dict 类型转换为 string 类型,然后再将它们插入 mysql,而不是直接插入。
  • 当您从数据库中提取数据时,您必须使用 json.loads() 将其转换为 Python 数据结构。
  • 如果它对您的情况有帮助,请点赞,以便其他人也能从中受益。谢谢!
猜你喜欢
  • 1970-01-01
  • 2020-03-07
  • 1970-01-01
  • 2013-05-09
  • 1970-01-01
  • 2011-12-05
  • 2020-03-04
  • 1970-01-01
  • 2021-08-22
相关资源
最近更新 更多