Ich versuche, einige Daten zur MySQL-Datenbank über eine Schleife hinzuzufügen, die durch die API iteriert, die eine JSON-Datei zurückgibt. Ich benutze Python und MySQLdb Modul.MySQLdb Fehler lokale Variable vor der Zuweisung referenziert (anders als üblich)
Aus irgendeinem Grund bekomme ich den berüchtigten UnboundLocalError. Ich habe mir die anderen Szenarien angeschaut, als dieses Problem auftrat und die bereits auf StackOverflow beantwortet wurden, aber nichts stimmte mit mir überein und ich konnte es nicht direkt auf dieses Problem anwenden.
Hier ist mein Code:
def request(API_KEY, URL, ch_no):
url = URL + ch_no + '/request'
request = requests.get(url, auth=(API_KEY, ''))
data_dict = request.json()
data_dict_json_dumps = json.dumps(data_dict)
data = json.loads(data_dict_json_dumps)
try:
for item in data['items']:
return (item['tag'], item['created_on'], item['delivered_on'], item['satisfied_on'], item['status'], item['particulars']['description'], item['persons_entitled'][0]['name'])
except KeyError:
pass
try:
description = item['particulars']['description']
except KeyError:
description = None
try:
persons_entitled = item['persons_entitled'][0]['name']
except KeyError:
persons_entitled = None
try:
cursor.execute("""INSERT INTO companies_and_charges_tmp (tags, company_id, created, delivered, satisfied, status, description, persons_entitled) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)""", (item.get('tag'), ch_no, item.get('created_on'), item.get('delivered_on'), item.get('satisfied_on'), item.get('status'), description, persons_entitled))
db.commit()
finally:
time.sleep(0.5)
del data
for ch_no in ch_nos:
charges_request(API_KEY, URL, ch_no)
Und hier ist der vollständige Fehler:
Traceback (most recent call last):
File "test2.py", line 58, in <module>
charges_request(API_KEY, URL, ch_no)
File "test2.py", line 49, in charges_request
cursor.execute("""INSERT INTO companies_and_charges_tmp (etags, company_id, created, delivered, satisfied, status, description, persons_entitled) VALUES (%s, %s, %s, %s, %s, %s, %s, %s)""", (item.get('etag'), ch_no, item.get('created_on'), item.get('delivered_on'), item.get('satisfied_on'), item.get('status'), description, persons_entitled))
UnboundLocalError: local variable 'item' referenced before assignment