Seite 1 von 1

tuple mit %s füllen

Verfasst: Sonntag 14. April 2024, 19:18
von kiaralle
Hallo,

ich probiere gerade ein Tuple mit %s zu füllen.
Ich möchte automatisch die Anzahl für VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s) über eine Schleife erzeugen.
Verwenden möchte ich das zum speichern in Mariadb

Code: Alles auswählen

statement = "INSERT INTO master_0 (reg_0, reg_1, reg_2, reg_3 , reg_4, reg_5, reg_6, reg_7, reg_8, reg_9) VALUES (%s, %s, %s, %s, %s, %s, %s, %s, %s, %s)"
Soll eventuell dann mal so ausschauen.

Code: Alles auswählen

statement = "INSERT INTO master_0 (list_tulp) VALUES (s)"
Mein Code als Vorstufe für meine Idee:

Code: Alles auswählen

i = 0
n = 100
liste = []
liste_tulp = ()
s = ()

while i <= n:
    liste.append(i)
    i += 1

print(liste)

for liste_read in liste:
    print(liste_read)
    liste_tulp = liste_tulp + (liste_read,)
    s = s + ('%s',)

print(liste_tulp)
print(s)

Ich erhalte für liste_tulp:
(0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37, 38, 39, 40, 41, 42, 43, 44, 45, 46, 47, 48, 49, 50, 51, 52, 53, 54, 55, 56, 57, 58, 59, 60, 61, 62, 63, 64, 65, 66, 67, 68, 69, 70, 71, 72, 73, 74, 75, 76, 77, 78, 79, 80, 81, 82, 83, 84, 85, 86, 87, 88, 89, 90, 91, 92, 93, 94, 95, 96, 97, 98, 99, 100)
Glaube, kann ich so verwenden

Für s was mein Value werden sollte:
('%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s', '%s')
Kann ich sicher so nicht verwenden. Störend sind die ' ' .
Wie mache ich das richtig.

Gruß Ralf

Re: tuple mit %s füllen

Verfasst: Sonntag 14. April 2024, 19:30
von Sirius3
Das Tabellendesign ist etwas fixes, und da gibt es meist nur eine handvoll Felder, weil mehr einfach zu unübersichtlich wird. Das kann man also schon einmal von Hand schreiben. Was soll das denn für eine Tabelle mit 100 Feldern sein? Die brauchen ja auch alle einen sprechenden Namen. Ich hoffe mal, die Tabelle heißt nicht wirklich master_0??

Der einzige Fall, wo man %s mit unbekannter Anzahl an Elementen ist, wenn man ein `WHERE feld in (%s, %s)` hat, wo man nach mehreren Werten sucht.

Variablen definiert man erst, wenn man sie braucht. liste_tulp und s werden erst viel später gebraucht. Variablennamen sollten aussagekräftig sein, `liste` ist das nicht, und warum stehen in der Liste Elemente die `liste_read` heißen?
Die Liste mit den Tulpen hat den selben Inhalt wie `liste` ist nur vom Typ tuple. Tuple werden nicht erzeugt, indem man immer wieder ein Element anhängt.
Die while-Schleife ist eigentlich eine for-Schleife aber eigentlich nur ein range-Aufruf.

Das ganze könnte also so aussehen:

Code: Alles auswählen

numbers = tuple(range(100))
placeholders = ('%s', ) * len(numbers)
Wenn man daraus dann einen String machen möchte, benutzt man `join`.

Re: tuple mit %s füllen

Verfasst: Sonntag 14. April 2024, 19:44
von kiaralle
@Sirius3,
danke das hilft mir ungemein weiter.

Ich schreibe immer mal wieder an meiner Solar-Steuerung, Lastabwurf einzelner Verbraucher (E-Auto, Heizungsstab...) mit Datenbankanbindung.
Alles läuft super, aber man will es immer besser machen. Und das macht dann wieder Spass :-)