使用 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"],其中列名是 NameFoodSports 对于这个例子,我只想使用两列'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 数据库的主要内容,如果未能解决你的问题,请参考以下文章

如果值不存在,将值插入 MySQL 表?

如何使用 executemany 将 Python 中的字典列表插入 MySQL

将 Python 列表(JSON 或其他)插入 MySQL 数据库

将嵌套的 JSON 对象插入 MySQL

python嵌套列表组合成一个新的嵌套列表

插入中的Python mysql内存泄漏