首页 > 解决方案 > 如何使用 Python 将列表列表插入数据库

问题描述

我有一个 python 列表,我想插入到 MySQL 数据库中。该列表如下所示:

[[column_name_1,value_1],[column_name_2, value_2],.......]

我想将其插入到列名为的数据库表中column_name_1, column_name_2.....

使数据库表如下所示:

column_name_1 | column_name_2 | column_name_3 | column_name_4

value_1       | value_2       | value_3       | value_4 

value_1       | value_2       | value_3       | value_4 

value_1       | value_2       | value_3       | value_4

如何在 python 中实现这一点?

提前致谢!

标签: pythonmysql

解决方案


假设您保证每列都有一个值,您可以执行以下操作,首先根据您拥有的列集将这些分组到行中。如果列值可能丢失,您可以再次将其切换到第一列外观的关键行(假设始终保证存在一个)。这种数据格式在确定行边界时是不寻常的并且容易出现错误,除非您对其格式有一些保证。

data = [
    ["Name", "John"],
    ["Address", "XYZ"],
    ["Gender", "Male"],
    ["Name", "Rose"],
    ["Address", "ABC"],
    ["Gender", "Female"]
]

columns = ["Name", "Address", "Gender"]
row = []
rows = []

for key, val in data:
    row.append(val)
    if len(row) == len(columns):
        rows.append(row)
        row = []

# The specifics of everything below will depend on your database and connection library. 
sql = (
    "INSERT INTO my_table (%s) VALUES (%s)" %
    (', '.join(columns), ", ".join(["?" for i in columns]))
)

conn = ...
cursor = ...
cursor.executemany(sql, rows)

推荐阅读