Hier ist meine Modelle und Ansichten Datei. Mein Ziel war es, meiner Datenbank ("Entries") ein neues Attribut hinzuzufügen, das ich meinen Modellen hinzugefügt habe, und die Migrationen mit den Befehlen von python manage.py vorzunehmen. Das hat funktioniert und alles hat das neue Attribut mit dem korrekten Standard "NA" drin. Ich wollte dann eine Datei lesen und diese Spalte verwenden, um die Datenbank mit den richtigen Werten zu aktualisieren. Es "funktionierte" mit der Ausnahme, dass nachdem der Befehl .save() ausgeführt wurde, er die Datenbank korrekt aktualisierte, aber immer noch meinen Ausnahmefehler und den try-Block verließ. SucheWenn Django save() zum Aktualisieren von db verwendet wird, wird eine Ausnahme ausgelöst, aber warum wird db noch aktualisiert?
Ich habe versucht zu sehen, ob jemand anderes das gleiche Problem hatte und lesen Website durch die Dokumentation auf Djangos über save() [https://docs.djangoproject.com/en/1.9/topics/db/models/]
Ich habe mich gefragt, warum und ob jemand dieses Problem gehabt hat und sagen kann, Ich, was in der Zukunft zu tun, um dieses Problem zu beheben.
Die Art, wie ich weiß, dass meine Datenbank aktualisiert wurde, war danach habe ich eine "Data.objects.all()" ausgeführt und auf jedem die "Sonden" und "Einträge" ausgedruckt, um zu sehen, dass sie alle von NA zu was geändert haben meine Akte war.
Danke für jede Hilfe.
models.py
class Data(models.Model):
Probes = models.CharField(primary_key=True, max_length=50)
Entries = models.CharField(max_length=25, default="NA")
Symbol = models.CharField(max_length=50)
Pattern = models.CharField(max_length=25)
Day1 = models.FloatField()
Day3 = models.FloatField()
class Meta:
unique_together = (('Probes', 'Symbol', 'Pattern'),)
views.py
def testUpdateDB(passFileName):
f = open(passFileName, 'r')
for Line in f:
Line = Line.replace('\r',"")
Line = Line.replace('\n', "")
row = Line.split(",")
AryList = {"Probes": row[0],
"Entries":row[2],
"Symbol": row[3],
"Pattern":row[4],
"Day1": row[5],
"Day3": row[6]
}
try:
# Update the database
t = Data.objects.get(Probes=AryList["Probes"])
print(t.Probes + " has " + t.Entries + " for its entries, updating to " + AryList["Entries"])
t.Entries = AryList["Entries"]
t.save()
u = Data.objects.get(Probes=AryList["Probes"])
print(u.Probes + " has " + u.Entries + " for its entries now. Update was sussess!")
except:
print("Could not find: " + AryList["Probes"])
In meinem views.py direkt nach/während der "t.save()" springt das Programm auf den Ausnahmeblock und Drucke diese Nachricht aus. Danach kann ich mir die DB ansehen und sehen, dass alles korrekt aktualisiert wurde, aber warum ist dann die Ausnahme passiert? Auch warum hat der gesamte try block nicht fertig? Jeder andere hat diesen Fehler, wenn er versucht, seine Datenbank zu aktualisieren.
Warum bringst du 'du'? Sie haben das Objekt bereits in 't' – patito
** Nie, niemals ** ein leeres' except' machen. Sie haben sechs Zeilen innerhalb des try-Blocks, und die Ausnahme könnte von jedem von ihnen verursacht werden; die Wahrscheinlichkeit ist hier, dass Sie einen anderen (wahrscheinlich trivialen) Fehler haben. Wenn Sie nur die Ausnahme abfangen wollen, wenn die Daten nicht existieren, fangen Sie nur folgendes ab: 'außer Data.DoesNotExist:'. –
Patito, als ich debugging dachte ich, dass es das t war, also habe ich versucht, das Abfrageergebnis einer neuen var zuzuordnen, und habe es nie wieder geändert. –