如何将返回的python JSON字典转换为字典中的列表,并将数据转换为SQL插入

给出示例JSON数据,该数据具有一个Dictionary,并且其中包含一个包含另一个Key对字典集的List:

MyData={
    'Key1': 'Value 1','Key2': Value2,'Key3': Value3,'Key4': 
            [
            {
              "SubKey1": "SubValue","SubKey2": "SubValue","SubKey3": "SubValue","SubKey1": "SubValue"
            },{
              "SubKey1": "SubValue","SubKey1": "SubValue"
            }
          ]
        }

如何将其转换为适当的SQL插入?

我发现一个SQL可以执行一次插入操作,并且看起来运行良好:

columns = ','.join("'" + str(x).replace('/','_') + "'" for x in MyData.keys())
values = ','_') + "'" 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调用。

谢谢

Lee_Ryan 回答:如何将返回的python JSON字典转换为字典中的列表,并将数据转换为SQL插入

为了进行记录,我要做的是回到我原来的SQL插入方法,使用通过Python创建的SQL连接并为第一个表创建单个插入。然后遍历key4值并为第二张表创建插入(这样,它将根据返回值的数量动态插入我的行。

类似这样的东西:

创建我的连接

conn = pyodbc.connect('Driver={SQL Server};'
                          'Server=.\........;'
                          'Database=MyDatabase;'
                          'Trusted_Connection=yes;')

    cursor = conn.cursor()
    cursor.execute('''
                    @InsertSQLVariable (insert into MyTable values .... )
                    ''')
    conn.commit()

然后我将传递上面创建的@InsertSQLVariable:

print("insert into Table1 values ('",\
      MyData["Key1"],"',",\
      MyData["Key2"],")","'",\
      sep='')

然后如上所述,遍历键值并为第二个表创建插入:

for i in MyData["Key4"]:
    print("insert into Table2 values ('",\
          i["SubKey1"],\
          i["SubKey2"],\
          i["SubKey3"],\
          i["SubKey4"],\
          sep='')

要添加的一些注释:

  • 此行:sep =''-删除python打印功能末尾的空格,一旦将其设置为变量,我将不得不删除该空格。
  • 键入时,我意识到在第二个表查询中,我仍然需要从第一个表插入中获取标识,以便获得表的键。
  • 我使用print而不是SQLInsert变量只是为了证明我将能够成功创建我的插入语句。
  • SQL插入语法的需求非常粗糙,并且在我仍在构建它的时候肯定还没有实现,但是我认为我有足够的能力证明我能够满足我的需求。我想完成这篇文章以支持StackOverflow,因为它们过去有时会帮助我...在不久的将来您可能会再见到我:)

我感谢StackOverflow及其所有贡献者。

本文链接:https://www.f2er.com/3140844.html

大家都在问