使用 Python 将嵌套列表插入 mysql 数据库
Posted
技术标签:
【中文标题】使用 Python 将嵌套列表插入 mysql 数据库【英文标题】:Insert nested list into mysql database using Python 【发布时间】: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"]
,其中列名是 Name
、Food
和 Sports
对于这个例子,我只想使用两列'name'和'likes',并希望整个字典 'food': 'apple', 'sports': 'running'在“喜欢”列中。
如果将字典作为字符串传递会发生什么;即list_data = ['Kate', "'food': 'apple', 'sports': 'running'"]
(注意字典周围的引号)
是的,我现在就是这样做的,而且效果很好。实际上我有很多这种数据要插入,所以我试图找到一种更直接的方法,而不是每次都将它们转换为字符串格式。
【参考方案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 数据结构。 如果它对您的情况有帮助,请点赞,以便其他人也能从中受益。谢谢!以上是关于使用 Python 将嵌套列表插入 mysql 数据库的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 executemany 将 Python 中的字典列表插入 MySQL