Datenbank anhand einer Liste erstellen und abspeichern
Verfasst: Freitag 13. September 2019, 14:58
Hallo zusammen,
ich habe ein Problem, das mich schon etwas länger beschäftigt, deswegen versuche ich es heute mal hier. Ich will eine Online Anmeldung für eine Sportveranstaltung mit Flask erstellen. Da diese Anmeldung über mehrere Seiten geht und mehrere Daten abfragt, will ich die Input Daten in einer SQLite Datenbank über Flask SQLAlchemy speichern. Da ich den Teilnehmern ermöglichen möchte (maximal) 10 Sportler und 10 Begleitpersonen in einem Anmeldeformular anzumelden ist das eine ziemliche Tipparbeit die init Funktion der Datenbank Klasse zu erstellen. Deswegen habe ich für die Sportler (lspo) und die Begleitpersonen (lbeg) jeweils eine Liste mit den Daten-Namen die abgefragt werden. Diese möchte ich dann in der Klasse/init Funktion mit einer Schleife durchlaufen, damit jedes benötigte Input aus der Liste jeweils 10mal in der init Funktion steht. Hier meine beiden Listen:
Hier meine Klasse:
Hier mein Platzhalter in "Kurzform" mit Schleife:
Den Platzhalter kann ich leider auch nicht als Variable einfach einfügen. Die Liste l1 leider auch nicht.
Ein weiteres Problem ist, dass ich versuche die Daten, aus der lspo Liste, dann nach dem Abschicken (über die POST Methode) wie folgt abzuspeichern:
Kann mir bitte jemand weiterhelfen? Ich bin am verzweifeln!
ich habe ein Problem, das mich schon etwas länger beschäftigt, deswegen versuche ich es heute mal hier. Ich will eine Online Anmeldung für eine Sportveranstaltung mit Flask erstellen. Da diese Anmeldung über mehrere Seiten geht und mehrere Daten abfragt, will ich die Input Daten in einer SQLite Datenbank über Flask SQLAlchemy speichern. Da ich den Teilnehmern ermöglichen möchte (maximal) 10 Sportler und 10 Begleitpersonen in einem Anmeldeformular anzumelden ist das eine ziemliche Tipparbeit die init Funktion der Datenbank Klasse zu erstellen. Deswegen habe ich für die Sportler (lspo) und die Begleitpersonen (lbeg) jeweils eine Liste mit den Daten-Namen die abgefragt werden. Diese möchte ich dann in der Klasse/init Funktion mit einer Schleife durchlaufen, damit jedes benötigte Input aus der Liste jeweils 10mal in der init Funktion steht. Hier meine beiden Listen:
Code: Alles auswählen
lspo = ["svorname", "snachname", "sgeschlecht", "sday", "smonth", "syear", "diskus", "speer", "kugel", "sprint", "basketball", "movo", "divo", "floorball", "powerlifting", "tischtennis", "mona", "badminton", "seinzelzimmer", "sjugendzimmer", "sZiPa", "svegetarier", "sveganer", "sse"]
lbeg = ["bvorname", "bnachname", "bgeschlecht", "bday", "bmonth", "byear", "beinzelzimmer", "bjugendzimmer", "bZiPa", "bvegetarier", "bveganer", "bse"]
Hier meine Klasse:
Code: Alles auswählen
class anmeldungtest(db.Model):
__tabelname__ = "DKS-Spiele Anmeldung"
id = db.Column(db.Integer, primary_key = True)
timestamp = db.Column(db.Text)
email = db.Column(db.Text)
consent_form = db.Column(db.Text)
aspo = db.Column(db.Integer)
for i in range (1, 11):
for element in lspo:
sportler = element + str(i)
sportler = db.Column(db.Text)
abeg = db.Column(db.Integer)
for i in range (1, 11):
for element in lbeg:
begleitung = element + str(i)
begleitung = db.Column(db.Text)
def __init__(self, **platzhalter**):
self.timestamp = timestamp
self.email = email
self.consent_form = consent_form
# Sportler
self.aspo = aspo
for i in range(1, 11):
for element in lspo:
addelement = str(element + str(i))
setattr(self, addelement, addelement)
self.abeg = abeg
for i in range(1, 11):
for element in lbeg:
addelement = str(element + str(i))
setattr(self, addelement, addelement)
Code: Alles auswählen
l1 = ["timestamp", "email", "consent_form", "aspo"]
for i in range(1, 11):
for element in lspo:
l1.append(element + str(i))
l1.append("abeg")
for i in range(1, 11):
for element in lbeg:
l1.append(element + str(i))
platzhalter = " = 0, ".join(l1)
print(platzhalter)
Ein weiteres Problem ist, dass ich versuche die Daten, aus der lspo Liste, dann nach dem Abschicken (über die POST Methode) wie folgt abzuspeichern:
Code: Alles auswählen
#(j ist abhängig von der Nummer des Sportlers)
j = 1
for element in lspo:
addelement = request.form.get(element + str(j))
sportlerdata = element + str(j)
setattr(x, sportlerdata, addelement)
print(getattr(x, sportlerdata))
db.session.commit()
print(getattr(x, svorname1))