Python 3.x 需要帮助使用Python从API中提取JSON数据并将其加载到SQL表中吗

Python 3.x 需要帮助使用Python从API中提取JSON数据并将其加载到SQL表中吗,python-3.x,Python 3.x,请您帮助我编写Python逻辑,从API中提取JSON数据,并将其直接加载到SQL表中 我已经编写了这段Python代码,它在平面JSON结构中运行良好,但如果JSON有子数组,它就会失败 例如,Sales可以在一个JSON文件中附加一个标题记录和多个行记录。我能够提取和加载标题数据,但无法加载行数据 以下是我现有的Python代码: import requests from requests.auth import HTTPBasicAuth import json import pandas

请您帮助我编写Python逻辑,从API中提取JSON数据,并将其直接加载到SQL表中

我已经编写了这段Python代码,它在平面JSON结构中运行良好,但如果JSON有子数组,它就会失败

例如,Sales可以在一个JSON文件中附加一个标题记录和多个行记录。我能够提取和加载标题数据,但无法加载行数据

以下是我现有的Python代码:

import requests
from requests.auth import HTTPBasicAuth
import json
import pandas as pd

Endpoint = "https://api.cin7.com/api"
FullEndpointExtension = "/v1/SalesOrders?order=Id&page=1&rows=250"

User_name = "XXXXX"
Password_key = "YYYYYY"
Authentication = HTTPBasicAuth(User_name, Password_key)
try:
    response = requests.get(Endpoint + FullEndpointExtension, auth = Authentication)
    DataFrame= pd.read_json(response.text)
    DataFrame = DataFrame[['id','createdDate','modifiedDate','createdBy','processedBy','isApproved','reference','memberId','firstName','lastName','company','email','phone','mobile','fax','deliveryFirstName','deliveryLastName','deliveryCompany','deliveryAddress1','deliveryAddress2','deliveryCity','deliveryState','deliveryPostalCode','deliveryCountry','billingFirstName','billingLastName','billingCompany','billingAddress1','billingAddress2','billingCity','billingPostalCode','billingState','billingCountry','branchId','branchEmail','projectName','trackingCode','internalComments','productTotal','freightTotal','freightDescription','surcharge','surchargeDescription','discountTotal','discountDescription','total','currencyCode','currencyRate','currencySymbol','taxStatus','taxRate','source','isVoid','memberEmail','memberCostCenter','memberAlternativeTaxRate','costCenter','alternativeTaxRate','estimatedDeliveryDate','salesPersonId','salesPersonEmail','paymentTerms','customerOrderNo','voucherCode','deliveryInstructions','status','stage','invoiceDate','invoiceNumber','dispatchedDate','logisticsCarrier','logisticsStatus','distributionBranchId','lineItems']]

#Capture Error Message
except Exception as ErrorMessage:
    Message = str(ErrorMessage)
    print(Message)
else:
    Message = 'Successfully Completed'
    print(Message)
    
DataFrame 


Sample code:
import json
import requests
import pandas as pd
from io import StringIO

response = requests.get("https://api.github.com/events")
DataFrame= pd.read_json(StringIO(response.text))

for I in DataFrame['actor']:
    print(DataFrame['id'],I['id'],I['login'])
示例JSON: [ { “id”:111, “createdDate”:“2020-09-08T17:58:00Z”, “修改日期”:“2020-09-10T02:01:09Z”, “createdBy”:0, “处理人”:99999, “isApproved”:正确, “参考”:“4000000000”, “成员ID”:1111, “firstName”:“RAM”, “lastName”:“实时信用卡订单”, “公司”:“, “电子邮件”:ram@abc.co.nz", “电话”:“041411111”, “流动”:“流动”, “传真”:“传真”, “deliveryFirstName”:“Ram”, “deliveryLastName”:“实时信用卡订单”, “交货公司”:“交货公司”, “交货地址1”:“XXXX”, “交货地址2”:“交货地址”, “交货城市”:“XXXXX”, “deliveryState”:“QLD”, “deliveryPostalCode”:“XXXXX”, “交货国”:“澳大利亚”, “billingFirstName”:“Ram”, “billingLastName”:“实时信用卡订单”, “billingCompany”:“, “账单地址1”:“XXXXXX”, “billingAddress2”:“, “billingCity”:“XXXXXX”, “billingPostalCode”:“XXXX”, “billingState”:“QLD”, “billingCountry”:“澳大利亚”, “布兰奇”:3, “分支邮件”:“, “项目名称”:“ABC”, “跟踪代码”:“, “内部评论”:“, “产品总计”:29.9500, “货物总计”:0.0000, “货物说明”:“, “附加费”:0.0000, “附加费说明”:“, “折扣总额”:0.0000, “折扣说明”:“, “总计”:29.9500, “货币代码”:“澳元”, “货币汇率”:1.0, “货币符号”:“$”, “税务状况”:“包括”, “税率”:0.1, “来源”:“API”, “自定义字段”:{ “订单1000”:空, “订单_1001”:空, “订单1002”:空, “订单1003”:空, “订单1004”:空 }, “isVoid”:错误, “成员电子邮件”:ram@abc.co.nz", “memberCostCenter”:空, “memberAlternativeTaxRate”:空, “成本中心”:“, “替代税率”:“, “estimatedDeliveryDate”:空, “销售人员ID”:0, “salesPersonEmail”:空, “付款条件”:“付款条件”, “customerOrderNo”:“, “凭证代码”:空, “送货须知”:“请在接待处离开”, “状态”:“已批准”, “阶段”:“已发送”, “发票日期”:“2020-09-08T17:58:00Z”, “发票编号”:5011111, “派遣日期”:“2020-09-08T20:31:00Z”, “物流承运人”:“BCD”, “后勤状况”:10, “distributionBranchId”:0, “行项目”:[ { “id”:363, “createdDate”:“2020-09-08T17:58:00Z”, “交易ID”:267777, “家长ID”:199999, “productId”:4444, “productOptionId”:333333, “integrationRef”:“0”, “排序”:1, “代码”:“T02392”, “名称”:“席灰”, “选择权1”:“, “选择权2”:“, “选择权3”:“, “数量”:1.0, “样式代码”:“T02392”, “条形码”:空, “sizeCodes”:空, “行注释”:“, “单位成本”:11.9900, “单价”:14.9500, “折扣”:0.0000, “qtyShipped”:1.0, “保持数量”:0.0, “会计代码”:“, “库存控制”:“先进先出”, “股票运动”:[ { “批处理”:空, “数量”:1.0, “串行”:空 } ], “尺寸”:[] }, { “id”:365, “createdDate”:“2020-09-08T17:58:00Z”, “交易ID”:267777, “家长ID”:199999, “productId”:4444, “productOptionId”:333333, “integrationRef”:“0”, “排序”:1, “代码”:“A1111”, “名称”:“席灰”, “选择权1”:“, “选择权2”:“, “选择权3”:“, “数量”:1.0, “样式代码”:“ABCXYZ”, “条形码”:“, “sizeCodes”:空, “行注释”:“, “单位成本”:11.9900, “单价”:0.0000, “折扣”:0.0000, “qtyShipped”:1.0, “保持数量”:0.0, “会计代码”:“, “库存控制”:“批次”, “股票运动”:[ { “批次”:“100”, “数量”:1.0, “串行”:空 } ], “尺寸”:[] }, { “id”:364, “createdDate”:“2020-09-08T17:58:00Z”, “transactionId”:2641, “parentId”:0, “productId”:4410, “productOptionId”:4411, “integrationRef”:“0”, “排序”:2, “代码”:“送货费”, “名称”:“送货费”, “选择权1”:“, “选择权2”:“, “选择权3”:“, “数量”:1.0, “样式代码”:“交货费”, “条形码”:“, “sizeCodes”:空, “行注释”:“, “单位成本”:0.0000, “单价”:8.0000, “折扣”:0.0000, “qtyShipped”:1.0, “保持数量”:0.0, “账户代码”:“ABCXYZ”, “库存控制”:“ABCXYZ”, “股票运动”:[], “尺寸”:[] } ] } ]最终解决的id:

导入json
作为pd进口熊猫
从pandas导入json_规范化
#https://pandas.pydata.org/pandas-docs/stable/reference/api/pandas.json_normalize.html
#https://www.kaggle.com/jboysen/quick-tutorial-flatten-nested-json-in-pandas
端点=”https://api.cin7.com/api"
FullEndpointExtension=“/v1/SalesOrders?其中=id=2666&order=id&page=1&rows=250”
User_name=“xxxxxx”
密码\u key=“xxxxxxx”
身份验证=HTTPBasicAuth(用户名、密码和密钥)
r=requests.get(Endpoint+FullEndpointExtension,auth=Authentication)
d=json.loads(r.text)
result1=json\u规范化(数据=d,记录路径='lineItems',元=['id'],错误='ignore',元前缀='Header')
打印(结果1)