Anfänger sucht Hilfe bei Datenbankproblem

Django, Flask, Bottle, WSGI, CGI…
Antworten
rbaert
User
Beiträge: 20
Registriert: Mittwoch 5. September 2018, 15:37

Hallo zusammen

Ich arbeite mit Python 3, Django 2 und sqlite (noch) unter Windows...(absoluter Neuling in Python, der sein erstes Projekt zusammenmurkst)

Ich muss wieder einmal auf eure Hilfe zurückgreifen. Ich versuche mich gerade an einem Web-Interface, mit dem ich ein LED-Panel steuern will, dies zur Info, auch wenn mein eigentliches Problem damit nicht viel zu tun hat. Während der Entwicklungs-Phase kommt es immer wieder zu Änderungen, wie dies wohl bei jedem Anfänger der Fall ist. Damit ich meine Datenbank-Inhalte nicht jedesmal, neu eingeben muss, wenn ich wieder einmal etwas ändere, wollte ich ein Skript schreiben, dass dies für mich erledigt. Dieses möchte ich dann aktuell halten und bei Bedarf ausführen können (Besonders in der Finalen Version).

Als dieses Skript nicht lief, wurde ich stutzig und habe einige Versuche in der Shell gemacht. Also: Eingabeaufforderung --> in den Projektordner -->
manage.py shell eingeben. Soweit so gut.

Jetzt wollte ich einen Eintrag in die Datenbank schreiben (nach Schulbuch):

Code: Alles auswählen

from home.models import Attribut
m = Attribut(name='ID')
m.name
'ID' --> Ausgabe kommt, ansonsten keine Fehler
m.save()  --> Fehlermeldung: ValueError: invalid literal for int() with base 10: ' ' 
Genau der gleiche Code habe ich vor ein paar Tagen in einem Tutorial gemacht. Da hat das alles funktioniert. Was ist denn jetzt anders, was mache ich falsch?
Zur Ergänzung hier noch mein Model:

Code: Alles auswählen

from django.db import models

class Attribut(models.Model):
    name = models.CharField(max_length=100)
    default_index = models.IntegerField(default=1)
    visible = models.BooleanField(default=True)
    send_value = models.CharField(max_length=10, default="")
    work_rank = models.IntegerField(default="")
    processing_method = models.CharField(max_length=4, default="")
Wahrscheinlich wird sich der erste, der diesen Text liest, fragen: "Wie kann einer alleine so dumm sein" :lol:
Naja ich gehe das Risiko ein. Erfahrungsgemäss, liegt der Fehler meistens ca. 44 cm vor dem Bildschirm.

Ich bin für jede Hilfe dankbar...
Gruss Roland
Benutzeravatar
__blackjack__
User
Beiträge: 13003
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@rbaert: Ist das tatsächlich die Fehlermeldung 1:1? In der Fehlermeldung ist nämlich ein Leerzeichen das im Code nicht vorkommt. Denn das Problem liegt bei `work_rank`. Dafür gibst Du ja nichts an, also wird der Default-Wert verwendet. Und eine leere Zeichenkette als ganze Zahl zu interpretieren, geht halt nicht.

Code: Alles auswählen

In [6]: int('')
---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-6-e4f84bb32d50> in <module>()
----> 1 int('')

ValueError: invalid literal for int() with base 10: ''
“Most people find the concept of programming obvious, but the doing impossible.” — Alan J. Perlis
rbaert
User
Beiträge: 20
Registriert: Mittwoch 5. September 2018, 15:37

@__blackjack__
Oh Mann, so einfach wäre es gewesen. Danke, leuchtet völlig ein.
Mit der Fehlermeldung hast du natürlich auch recht. Ich habe diese getippt, nicht kopiert, daher hat sich da ein Leerzeichen eingeschlichen...
Aller Anfang ist schwer...
Antworten