Befehle Python sqlite3

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
slook
User
Beiträge: 25
Registriert: Mittwoch 5. Juni 2019, 20:09

Hi

gibt es eine Liste mit allen möglichen Befehlen die in dem execute eingesetzt werden können?
Ich bin gerade auf der suche nacht etwas kann aber irgendwie keine gute Übersicht finden.
Vielleicht habe ich auch einen falschen Ansatz :lol:

Wenn ich eine Datenbank habe mit einer Tabelle. Die ersten drei Spalten haben Werte (mehrere Zeilen). Wenn ich dann eine neue Spalte hinzufüge die nur einen Wert in zB. der 5ten Reihe hat. Wie kann ich überprüfen wo der Wert steht? Ich will also die ID des letzten Wertes in Spalte 4 haben.

Oder (fällt mir jetzt beim schreiben ein) sollte ich für diesen vierten Wert lieber eine neue Tabelle anlegen in der Datenbank? Die letzte Zeile mit einem Wert habe ich immerhin hinbekommen ;)

lg
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Das ist verwirrend. Du sprichst von drei Reihen, dann von Reihe 5 fragst aber nach Reihe 4?
Dass Du von Zeilen redest, läßt mich vermuten, dass Du von SQL-Datenbanken ein falsches Verständnis hast.
Tabellen haben Einträge und diese haben Felder. Von einem ersten oder letzten Eintrag zu reden, macht nur Sinn, wenn man auch ein Kriterium hat, wie die Einträge zu ordnen sind, z.B. sortiert nach dem Wert eines Feldes.

Kannst Du mal konkret sagen, was für ein Problem Du versuchst zu lösen, ohne schon vorweg zu nehmen, wie Du denkst, dass es zu lösen wäre, also z.B. auch dass dafür eine Datenbank nötig wäre.
Benutzeravatar
__blackjack__
User
Beiträge: 13079
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@slook: Um die direkte Frage zu beantworten: https://sqlite.org/
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
slook
User
Beiträge: 25
Registriert: Mittwoch 5. Juni 2019, 20:09

danke für den Link. werde ich am wochenende mal durchschauen, sieht sehr komplex aus :D
@sirius3
Bild
so war es gemeint. wie bekomme ich raus das der letzte wert in f die id 9 hat?
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Dann zeig doch mal den Code, den Du bisher geschrieben hast, wie Dein Tabellendesign aussieht und wie Du sie befüllst.
Benutzeravatar
__blackjack__
User
Beiträge: 13079
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@slook: Du fragst halt Spalte `f` ab mit der Bedingung das `id` den Wert 9 hat. Das so ziemlich das simpelste SELECT-Beispiel das man sich vorstellen kann. Du musst SQL lernen. Da sollte es mehr als genug Material im Netz geben. Sowohl SQL allgemein, als auch für SQLite.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
Benutzeravatar
sparrow
User
Beiträge: 4187
Registriert: Freitag 17. April 2009, 10:28

@slook

Noch der Hinweis:
Eine "Tabelle" in einer Datenbank ist nicht eine Tabelle in einer Tabellenkalkulation.
Das dynamische Hinzufügen von Spalten weist auf ein kaputtes Design hin.

Lerne SQL, beschäftige dich damit, was "Relation" in "Relationalen Datenbanken" bedeutet und was Normalisierung ist.
slook
User
Beiträge: 25
Registriert: Mittwoch 5. Juni 2019, 20:09

@_blackjack_ ich weiß aber nicht an welcher id der letzte wert ist.

also benutze ich sql obwohl ich es nicht brauche/sollte?
ich habe daten in den ersten spalten, auf der basis der daten berechne ich neue werte. der wert an zb. id 9 bekommt dann einen neuen zusätzlichen wert. später will ich die berechneten werte auf bestimmte zahlenwerte überprüfen, und dann zugriff auf die ganzen werte die zu der id gehören haben.

ist sql dafür das falsche werkzeug?
__deets__
User
Beiträge: 14529
Registriert: Mittwoch 14. Oktober 2015, 14:29

SQL kann richtig sein, nur deine Vorstellung, das berechnete Werte in Tabellen landen, die auch noch dynamische Spalten haben, ist falsch. Wenn du etwas ausrechnest, merkst du es dir einfach und rechnest weiter.
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

@slook: so ganz habe ich Dein Problem noch nicht verstanden. Um ehrlich zu sein, ich verstehe überhaupt nicht, was Du da versuchst zu machen. Kannst Du das Problem, das Du versuchst, nicht mal erklären? Was bedeuten die Zahlen, oder die Reihen, was willst Du berechnen? Woher kommen die Daten und wo soll das Ergebnis hin?
slook
User
Beiträge: 25
Registriert: Mittwoch 5. Juni 2019, 20:09

in erster linie will ich das ganze etwas lernen, also python.
habe daher etwas geschaut und versuche mich jetzt an was eigentlich ziemlich einfachen.

ich rufe den endkurs einer aktie von der börse ab, also habe ich schonmal die einträge Datum und Kurs.
und dann will ich einfach den durchschnittlichen Kurs der letzten Tage berechenen, zb: 9
und den will ich dann an die passende stelle schreiben. und weil ja bei den ersten tagen keine durchschnittswert da sind, sind die leer.

bisher habe ich eine funktion geschrieben um die daten abzurufen. die nächste soll dann den durchschnittswert eintragen und um zu wissen das
ich am nächsten tag quasi eine id weiter anfangen muss, muss ich ja irgendwie wissen an welchem tag das letzte mal ein wert berechnet wurde.
slook
User
Beiträge: 25
Registriert: Mittwoch 5. Juni 2019, 20:09

ok, ich würde es jetzt so machen:
cursor.execute("SELECT ID FROM Aktie WHERE durchschnitt = (SELECT MAX(durchschnitt ) FROM Aktie)")

wenn ich jetzt mehrere durchschnittswerte berechene, wäre es ratsam dann eine extra Tabelle für die durchschnittswerte in der Datenbank zu erstellen?
Benutzeravatar
__blackjack__
User
Beiträge: 13079
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@slook: Das sind dann ja redundante Daten – die würde man eher nicht speichern, sondern berechnen wenn man sie braucht.

Und warum der maximale Durchschnitt der letzte sein sollte, erschliesst sich mir nicht. Das könnte ja nur stimmen bei Aktien die immer nur steigen. Das Kriterium ist doch wohl eher welche Datensätze keinen Durchschnitt haben – eventuell noch mit einer Einschränkung wie weit zurück geschaut werden soll.
„All religions are the same: religion is basically guilt, with different holidays.” — Cathy Ladman
slook
User
Beiträge: 25
Registriert: Mittwoch 5. Juni 2019, 20:09

ja, mann sollte es nicht nur mit einem Wert testen :D
Sirius3
User
Beiträge: 17741
Registriert: Sonntag 21. Oktober 2012, 17:20

Um solche Durchschnittswerte zu berechnen, kennt SQL inzwischen sogenannte Window-Functions. Das speichert man nicht mit in die Datenbank, weil sowas will man ja variabel gestalten, je nachdem über wieviele Tage man den Durchschnitt bilden will. Zusätzlich brauchst Du noch das Datum des Aktienkurses, denn nach dem Datum willst Du die Werte ja sortieren.
Antworten