【发布时间】:2022-01-19 08:48:55
【问题描述】:
我的列表如下:
col1 = ['', '8465-01-446-8616', '8465-01-538-4334', '8345-01-641-8205', '8465-01-690-3107', '8465-01-526-7827', '', '', '5120-00-097-4136', '6640-00-866-1645']
col2 = [[], ['06222'], ['0N995', '12858'
], ['58367', '58367'], ['4SEN6'], ['0CCM0'], [], [], ['82523', '8BXN8'], ['1KGE8', '725Q0']]
col3 = [[], ['MODEL 703'], ['PMBS9', 'BS-9'], ['24425HBA', '37210'], ['MA66-002'], ['03485'], [], [], ['100250', '5080'], ['09-845C', '4716E20']]
col4 = [[], [''], ['AARDVARK', 'PAULSON MANUFACTURING CORPORAT
ION'], ['WILLARD MARINE, INC.', 'WILLARD MARINE, INC.'], ['CONDOR OUTDOOR PRODUCTS, INC.'], ['CASCADE DESIGNS, INC.'], [], [], ['', 'TELEFLEX LLC'], ['FISHER SCI
ENTIFIC COMPANY L.L.C.', 'THOMAS SCIENTIFIC, LLC']]
我必须将这些数据插入数据库。
我尝试首先使用将列表列表转换为单个列表
col2 = sum(col2,[])
col3 = sum(col3,[])
col4 = sum(col4,[])
并使用转换为元组列表
records = list(zip(col1,col2,col3,col4))
记录
[('', '06222', 'MODEL 703', ''), ('8465-01-446-8616', '0N995', 'PMBS9', 'AARDVARK'), ('8465-01-538-4334', '12858', 'BS-9', 'PAULSON MANUFACTURING CORPORATION'), ('8345-01-641-8205', '58367', '24425HBA', 'WILLARD MARINE, INC.'), ('8465-01-690-3107', '58367', '37210', 'WILLARD MARINE, INC.'), ('8465-01-526-7827', '4SEN6', 'MA66-002', 'CONDOR OUTDOOR PRODUCTS, INC.'), ('', '0CCM0', '03485', 'CASCADE DESIGNS, INC.'), ('', '82523', '100250', ''), ('5120-00-097-4136', '8BXN8', '5080', 'TELEFLEX LLC'), ('6640-00-866-1645', '1KGE8', '09-845C', 'FISHER SCIENTIFIC COMPANY L.L.C.')]
此记录不匹配。
和用于插入数据库的mysql查询:
conn = mysql.connector.connect(
host="",
user="",
password="",
database=""
)
cursor = conn.cursor()
cursor.executemany ( """
INSERT INTO table(col1,col2,col3,col4)
VALUES (%s,%s,%s,%s)
""" , records )
conn.commit ()
这造成了上述数据的不匹配:
数据库中的数据应该是这样的:
,,,,
8465-01-446-8616,0622,MODEL 703,,
8465-01-538-4334,0N995,PMBS9,AARDVARK,
8465-01-538-4334,12858,BS-9,PAULSON MANUFACTURING CORPORATION
8345-01-641-8205,58367,24425HBA,WILLARD MARINE, INC.
8345-01-641-8205,58367,37210,WILLARD MARINE, INC.
所有列表列表中的单个列表链接到 col1 的元素。
如何将这些数据正确插入Mysql数据库?
数据框中所需数据的示例
col1 col2 col3 col4
8465-01-446-8616 06222 MODEL 703
8465-01-538-4334 0N995 PMBS9 AARDVARK
8465-01-538-4334 12858 BS-9 PAULSON MANUFACTURING CORPORATION
8345-01-641-8205 58367 24425HBA WILLARD MARINE, INC.
8345-01-641-8205 58367 37210 WILLARD MARINE, INC.
第一行是空的。
【问题讨论】:
-
我很确定错误在于您解释数据的方式。原来的四列中的每一列都有 10 个元素,其中一些是空的。第 2 到 4 列的每个元素都是一个列表。当您执行
sum(col2,[])时,您会展平列表,破坏原始对齐方式。此外,列 2 到 4 的长度变为 11 个元素而不是 10 个(组成每列的子列表的各种长度的影响)。您可能应该更好地了解数据的结构,并且可能接受列表作为数据库的元素 -
sum(col2,[])存在错误。所以我想避免这种情况,并按照预期的输出创建元组列表。 -
我会将所有数据放在 Pandas Dataframe 中。 Pandas 有一个内置函数可以将你的 Dataframe 插入到数据库中。
-
@Herker 你能说明一下如何做吗,我也认为使用 pandas 会有所帮助
-
我已经更新了数据框的外观
标签: python mysql list tuples mysql-python