【问题标题】:Insert dictionary within list to database in python将列表中的字典插入python中的数据库
【发布时间】:2015-10-30 09:10:11
【问题描述】:

我有一个如下列表,我已经修剪了列表。数据是按日期的。所以对于每个日期,都有不同项目的值。列表的每个索引都是一个字典

ls=[{'item1': 6755, 'item2': 20, 'item3': 3, 'item4': 8.04, 'item5': 24, 'item6': 208, 'date': 'Thu. 29 Oct. 2015', 'item6': 329, 'datetime': datetime.datetime(2015, 10, 29, 0, 0), 'item7': 31, 'item8': 1.24, 'item9': 28.00, 'item10': 10},{'item1': 67, 'item2': 202, 'item3': 33, 'item4': 28.04, 'item5': 234, 'item6': 2308, 'date': 'Thu. 30 Oct. 2015', 'item6': 3249, 'datetime': datetime.datetime(2015, 10, 30, 0, 0), 'item7': 331, 'item8': 21.24, 'item9': 238.00, 'item10': 410}]

我的表结构如下:

Datetime,Item,Value

我需要按日期将每个项目插入此表单并排除列表中的日期字段。 我是 python 新手,无法解决这个问题。我之前已经完成了每个项目进入表格中单独列的位置,但在这里我需要插入选择性数据的位置不同,即(不包括列表中的日期字段)

【问题讨论】:

标签: python mysql list


【解决方案1】:

你有三个任务:

  1. 从列表中排除日期字段
  2. 设置 Python 以运行 SQL 命令
  3. 创建代码以将数据插入数据库

我不能 100% 确定您希望如何存储已包含在数据库中的数据,但我会给出最好的猜测。

items_to_insert = []
for dictionary in ls:
  #pop removes the value from the dict
  date_for_insert = dictionary.pop("datetime", None)
  if date_for_insert is None:
    raise ValueError('No datetime - aborting')
  for key in dictionary:
    items_to_insert.append([date_for_insert, key, dictionary[key]

此代码转到 ls 列表中的每个字典,删除日期时间,然后将数据解析为数组。现在您可以插入数据了

对于任务 2,您需要使用 PyMySQL 或类似的东西,并设置您的连接和东西,然后对于任务 3 运行:

for item in items_to_insert:
  cursor.execute("INSERT INTO mytable (Datetime,Item,Value) VALUES ('{}', '{}', '{}')".format(item[0], item[1], item[2]))

或者类似的东西。由于上面的数据预处理,这条线更容易。

您可能需要以某种方式格式化日期时间才能使此代码正常工作。

【讨论】:

  • 谢谢...我在字典中的此代码中遇到语法错误:items_to_insert.append([date_for_insert, key, dictionary[key])
  • 补充一下是不是因为 type(ls) 是一个列表,这里用到了字典解析……只是猜测
  • @D14 不,我只是忘记了 2 个括号。您应该配置代码编辑器以突出显示括号匹配。我已经更新了我的答案以修复缺少的括号,并进行了测试以确保代码没有语法错误。
  • 看起来您还需要弹出“日期”项目,具体取决于您要完成的任务。我不会给你代码;)
猜你喜欢
  • 2022-10-18
  • 2014-02-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-04
相关资源
最近更新 更多