mit zahl aus sql-abfrage rechnen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
kritz
User
Beiträge: 13
Registriert: Montag 2. April 2007, 15:26

Donnerstag 5. April 2007, 15:12

hallo

ich habe eine datenbank (sqlite3). die erste spalte ist der primary key. dort wird jede zeile aufsteigend nummeriert.

wenn ich eine neue zeile einfüge, möchte ich zuerst aus der db die letzte zeile auslesen:

Code: Alles auswählen

#letzte id aus sql auslesen
    
sql = """
SELECT
    max (pid)
FROM
    produkte
"""

cur.execute(sql)
zaehler = cur.fetchone()
damit erhalte ich nun die höchste zahl. nun würde ich gerne diese zahl um 1 erhöhen und dem nächsten datensatz diesen primary key zuweisen. ich kann mir dieser zahl von sql aber nicht rechnen, da von sql ein tupel zurückgegeben wird. das kann ich auch nicht auf int mit

Code: Alles auswählen

zaehler = int(cur.fetchone())
umwandeln. wie gehe ich da am besten vor?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Donnerstag 5. April 2007, 16:44

kritz hat geschrieben:die erste spalte ist der primary key.
Hallo kritz!

Wenn du es richtig machst, dann brauchst du SQLite den PK nicht mit zu übergeben. SQLite erhöht diesen automatisch, wenn der Feldtyp "INTEGER" ist und das Feld als "PRIMARY KEY" deklariert wurde.

http://www.sqlite.org/faq.html#q1

Wenn du die Lösung trotztem brauchst...

Code: Alles auswählen

zaehler = cur.fetchone()[0] + 1
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
kritz
User
Beiträge: 13
Registriert: Montag 2. April 2007, 15:26

Donnerstag 5. April 2007, 18:02

ist doch eigentlich eh leicht und logisch!!!

Danke

(Nachdem ich erst den 3. Tag in Python programmiere und ich vorher nur ganz wenig java hatte, fehlen mir noch diese Grundlagen....)
kritz
User
Beiträge: 13
Registriert: Montag 2. April 2007, 15:26

Donnerstag 5. April 2007, 18:11

und was muss ich angeben, wenn ich anstatt von Zahlen eine bestimmte buchstabenfolge herausholen will?

Wenn ich die Null durch ein a ersetze geht es ja natürlich nicht:

Code: Alles auswählen

zaehler = cur.fetchone()[a] 
BlackJack

Donnerstag 5. April 2007, 18:29

Ich glaube ich verstehe die Frage nicht, was sollte denn da für ein Ergebnis herauskommen? `fetchone()` liefert ein Tupel.
kritz
User
Beiträge: 13
Registriert: Montag 2. April 2007, 15:26

Donnerstag 5. April 2007, 22:26

ja genau, und in dem tupel, das ich abfrage ist nur ein string drinnen (genau gesagt eine url). ich möchte diese url dann im internet aufrufen. dazu muss ich das tupel aber in einen string umwandeln.

Code: Alles auswählen

zaehler = cur.fetchone()[0]
dieser code wandelt das tupel in einen integer. wie kann ich das tupel in einen string umwandeln?
BlackJack

Donnerstag 5. April 2007, 23:01

Der Quelltext wandelt überhaupt nichts, sondern holt das Element an Index 0 aus dem Tupel, egal was für einen Typ dieses Element hat. Du solltest vielleicht mal ein Tutorial durcharbeiten. Das gehört zu den Grundlagen.
kritz
User
Beiträge: 13
Registriert: Montag 2. April 2007, 15:26

Freitag 6. April 2007, 09:21

jetzt versteh ich...hab nicht gewusst, dass man sich damit den Wert zu dem angegebenen index holt...

sorry, dass ich ein anfänger bin...
Leonidas
Administrator
Beiträge: 16024
Registriert: Freitag 20. Juni 2003, 16:30
Kontaktdaten:

Freitag 6. April 2007, 13:28

kritz hat geschrieben:sorry, dass ich ein anfänger bin...
Dafür musst du dich nicht entschuldigen, aber das Tutorial solltest du dennoch durchgearbeitet haben.
My god, it's full of CARs! | Leonidasvoice vs Modvoice
Antworten