问题遇到的现象和发生背景
背景:通过api接口获取数据,部分成功,中间报错
问题相关代码,请勿粘贴截图
import requests
import json
import time
import pandas as pd
import psycopg2
t = time.time()
datetime = int(t)
headers = {'content-type': 'application/json'}
data = {'usercode': "xxx", 'pwd_md5': "xxx", 'timestamp': datetime}
url = 'xxx'
response = requests.post(url, headers=headers, data=json.dumps(data))
data = json.loads(response.text)['result']
conn = psycopg2.connect(host='xxx', port=xxx, database='xxx', user='xxx', password='xxx')
cursor = conn.cursor()
sesql = """select equipment_model from dim.dim_mes_device_online where equipment_model is not null
and equipment_ip is not null group by equipment_model ;"""
cursor.execute(sesql)
dataSum = []
print(dataSum)
results = cursor.fetchall()
for row in results:
name = row[0]
headers1 = {'content-type': 'application/json', 'X-Access-Token': data}
data1 = {'deviceModel': name, 'offset': 0, 'count': "true", 'timestamp': datetime}
url1 = 'xxx'
response1 = requests.post(url=url1, headers=headers1, data=json.dumps(data1))
count = json.loads(response1.text)['result']['count']
if count == 0:
continue
else:
num = int(count / 3000)
print(num)
i = 0
while i <= num:
headers1 = {'content-type': 'application/json', 'X-Access-Token': data}
data1 = {'deviceModel': name, 'offset': i * 3000, 'count': "true", 'timestamp': datetime}
url1 = 'xxx'
response1 = requests.post(url=url1, headers=headers1, data=json.dumps(data1))
data1 = json.loads(response1.text)['result']['values']
print(i)
dataSum = dataSum + data1
i = i + 1
print(dataSum)
df = pd.DataFrame(dataSum)
list_tup = [tuple(r) for r in df.to_numpy()]
sub_sql = str(list_tup)[1:-1]
if sub_sql is not None:
sql = "insert into public.mes_api_data_tmp values {}".format(sub_sql)
sql = sql.replace("None", "NULL")
sql = sql.replace(", nan,", ", NULL,")
sql = sql.replace("ns=1;i=", "")
sql = sql.replace("ns=0;i=", "")
else:
continue
print(sql)
trsql = "TRUNCATE TABLE public.mes_api_data_tmp"
cursor.execute(trsql)
cursor.execute(sql)
conn.commit()
# #关闭数据库链接source_db.close()
conn.cursor()
运行结果及报错内容
运行结果:NoneType object is not subscriptable
我的解答思路和尝试过的方法
知道是count = json.loads(response1.text)['result']['count']出错了,但是不知道如何修改?