【发布时间】:2019-11-08 00:55:25
【问题描述】:
给定示例 JSON 数据,其中包含一个 Dictionary 和一个 List,其中包含另一个字典的密钥对集:
MyData={
'Key1': 'Value 1',
'Key2': Value2,
'Key3': Value3,
'Key4':
[
{
"SubKey1": "SubValue",
"SubKey2": "SubValue",
"SubKey3": "SubValue",
"SubKey1": "SubValue"
},
{
"SubKey1": "SubValue",
"SubKey2": "SubValue",
"SubKey3": "SubValue",
"SubKey1": "SubValue"
},
{
"SubKey1": "SubValue",
"SubKey2": "SubValue",
"SubKey3": "SubValue",
"SubKey1": "SubValue"
}
]
}
如何将其转换为正确的 SQL 插入?
我找到了一个可以进行单次插入的 SQL,而且它似乎运行良好:
columns = ', '.join("'" + str(x).replace('/', '_') + "'" for x in MyData.keys())
values = ', '.join("'" + str(x).replace('/', '_') + "'" for x in MyData.values())
sql = "INSERT INTO %s ( %s ) VALUES ( %s );" % ('mytable', columns, values)
print(sql)
但它只在其中创建 1 行插入
我正在寻找的是 Key1,Key2,Key3 与 3 个子值一起插入了 3 次(注意可以多于或少于 3 个)。
我会注意到这是对返回 JSON 数据的 API 的 Python 3 调用。
谢谢
【问题讨论】:
-
表结构是什么样的?似乎
Key4应该在另一个具有外键关系的表中。 -
假设你的表有 key1、key2 和 key3 列,你的数据只会创建一行,即你的最终查询看起来像 insert into mytable (key1, key2 and key3) values('Value 1', 'Value 2', 'Value 3',) 你为什么期望 3 个插入?分享你的表结构..
-
好点,Key4 值可以在单独的表中。那么在这种情况下,我将如何完成插入 3 个键值、获取 SQL 本地 KeyID 并在新表中创建插入以及外键?我可以使表结构符合我的要求,但鉴于我们在这里所说的,它类似于 2 个表,其中 table1 有 3 列,table2 有 5 列,其中一个是外键。我还想插入 ID 和日期时间戳。 Id 可以自动递增,但不确定使用这些方法的时间戳(通常只是 getdate()。
标签: python sql json api dictionary