如何将返回的python-JSON字典在字典中的列表、数据转换成sqlins

2024-09-25 08:33:16 发布

您现在位置:Python中文网/ 问答频道 /正文

示例JSON数据包含一个字典,其中包含一个包含另一个键对字典集的列表:

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)

但它只创建一行插入

我要找的是Key1、Key2、Key3和3个子值一起插入3次(注意可以有多于3次,也可以有少于3次)。你知道吗

我要注意的是,这是一个python3对返回JSON数据的API的调用。你知道吗

谢谢


Tags: columns数据jsonsql字典valueskey2key1
1条回答
网友
1楼 · 发布于 2024-09-25 08:33:16

对于记录,我要做的是返回到我原来的SQL insert方法,使用通过Python创建的SQL连接,并为第一个表创建一个insert。然后遍历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"],")",\
      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函数末尾的空格,我可能需要在将它设置为变量后删除它。你知道吗
  • 当我输入时,我意识到在第二个表查询中,我仍然需要从第一个表插入中获得标识,以便获得表的键。你知道吗
  • 我使用print而不是SQLInsert变量只是为了证明我能够成功地创建insert语句。你知道吗
  • sqlinsert语法的需求是相当粗糙的,而且在我还在构建它的时候,它肯定还没有实现,但是我认为我有足够的证据表明我能够在这一点上完成我的需求。我想完成这篇文章,以支持StackOverflow,因为他们在过去曾经帮助过我…你可能会在不久的将来再次看到我:)

我要感谢StackOverflow和所有对此做出贡献的人。你知道吗

相关问题 更多 >