sqlite update

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Ich kenne nur die ganz normalen zwei dimensionalen Arrays. Ich muß ganz ehrlich sagen, die Platzhalten für SQL, kenne ich wirklich nicht. Ich meine, ich habe 2 Jahre Schule als Programmierer gehabt und die wurden nie angesprochen und kannte sie auch vorher noch nicht und habe auch noch kein Buch in der Hand gehabt, in dem die beschrieben wurden. Unter .NET, habe ich meine SQL Abfragen ganz anders zusammen gebaut. Hatte mir dort eine Klasse geschrieben, die das alles erledigt und mit einem StringBuilder den kompletten SQL String zusammen baut. So hatte ich es auch unter PHP gelöst ( hatte im Netz dafür eine StringBuilder Klasse gefunden ). Wenn man sich erst mal an eine Sache gewöhnt hat, dann versucht man die auch immer weiter zu benutzen, in welcher Sprache auch immer. Der eine Schwört darauf, der andere auf eine andere Methode. Python setze ich gerade jetzt ein weil es mir sehr gut gefällt und relativ einfach ist und vor allem plattformunabhängig. Ist das erste mal, das ich mir eine Programmiersprache aussuchen kann, sonst mußte ich ja immer die benutzen, die auch verlangt wurde. Ich will mich hier ja auch nicht rechtfertigen, doch ich hätte die Frage nicht gestellt wenn ich unter google, ne Lösung gefunden hätte oder ein Tutorial.

EDIT:
aber dank der Vorlage, habe ich es dann auch hinbekommen. Danke.
Xynon1
User
Beiträge: 1267
Registriert: Mittwoch 15. September 2010, 14:22

Wenn du schon mit 3 Sprachen gearbeitet hast und noch nie was von Dictionaries gehört hast, solltest du das hier mal lesen: http://de.wikipedia.org/wiki/Assoziatives_Array
und wenn man mal beachtet, das du das mit den Platzthaltern immer noch nicht richtig verstanden hast, dann bezweifle ich irgendwie das du die Vorlage verstanden hast oder täusche ich mich da ?
Traue keinem Computer, den du nicht aus dem Fenster werfen kannst.
Xynon auf GitHub
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

The Hit-Man hat geschrieben:Ich will mich hier ja auch nicht rechtfertigen, doch ich hätte die Frage nicht gestellt wenn ich unter google, ne Lösung gefunden hätte oder ein Tutorial.
Also Du hättest doch einfach mal die Doku zum Modul in der Python-Doku angucken können / sollen. Da wird auch erklärt, wie man Parameter-Substitution durchführt. Zusätzlich findet sich dort ein Verweis auf PEP 249, welches die DP-API 2.0 generisch erklärt.

Ich finde das sollte für Leute mit Python und SQL Kenntnissen ausreichend sein.

Wenn es an beidem hapert muss man leider sagen, dass man sich zunächst schon solche Grundlagen wie eben wichtige Datentypen aneignen sollte. Und SQL-Queries ohne ausreichend SQL-Kenntnisse dynamisch zusammen zu basteln ist sicherlich auch nicht sehr empfehlenswert. Da würde ich dann wohl eher auf einen ORM setzen (würde man so etwas nicht auch in C# bevorzugen? In PHP ist man ja eher aufs Frickeln bedacht und schustert sich Queries irgend wie zusammen... :mrgreen: ).
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Jetzt schlag mich Tod, hatte gerade mal Cheffe gefragt, wie er denn seine Werte aus den Formularen in die Datenbank bekommt. Er programmiert mit Centura und er macht genau das gleiche, wie Du mir beschrieben hattest und zwar ließ er seine Werte direkt in den SQL-Befehl mit dem Doppelpunkt. Keine Ahnung, warum er mir das nie in 2 Jahren mal ein mal gezeigt hatte. Nunja in der Schule gabs eben nur PHP+mysql. C# hatte ich für mein Abschlußprojekt. Eine kleine Adressenverwaltung ( C# + SQLITE ). Dort hatte ich das, wie gesagt, anders gelöst. Bin ja auch nur durch Zufall auf die Methode gekommen, das man die Daten auch per Dic weg schreiben kann. Es sah eben auf den ersten Blick sehr elegant aus und an meinem neuen Projekt, bin ich ja erst seit 3 Tagen und wie gesagt, ich will dann immer alles gleich auf einmal. Bin gerade dabei die Masken zu basteln, mit wxglade. Da mußte ich mich auch erst mal rein denken. Aber klappt ganz gut. Kann die Werte aus den Formularen auslesen, Buttons belegen und die Werte ( dann jetzt ), in die Datenbank schreiben.
Weißte, C# ( Visual Studio ), ist schon echt mächtig, also die IDE. Da haste alles unter einem Dach. Allerdings mag ich Python eben viel mehr und da ich mir die Sprache aussuchen konnte, nahm ich eben Python. Außerdem benutze ich seit Jahren Linux und dort ist Python eben standart und kein C#.
Wenn du dann vielleicht mal ne Frage hast, wie man nen Linux-Kernel baut, helfe ich dir auch ;)
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

The Hit-Man hat geschrieben:JBin gerade dabei die Masken zu basteln, mit wxglade. Da mußte ich mich auch erst mal rein denken. Aber klappt ganz gut. Kann die Werte aus den Formularen auslesen, Buttons belegen und die Werte ( dann jetzt ), in die Datenbank schreiben.
Hui... also ich wäre es umgekehrt angegangen und hätte erst einmal die Logik geschrieben, die geforderten Queries / DB-Interaktionen zu implementieren und danach eine GUI dafür zu basteln. Konzentriert man sich zu früh auf die GUI¹, so führt das oftmals bei noch unerfahrenen Programmieren zur Vermischung von Logik und GUI. Ich hoffe Du hast das schön aufgeteilt?

¹ Frühe GUI Prototypen ohne Funktionalität können natürlich auch nützlich sein, um besser zu verstehen, welche Interaktionen man überhaupt benötigt.
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
BlackJack

@The Hit-Man: Während das Zusammensetzen von SQL-Anfragen von Hand bei PHP leider nicht ganz unüblich ist -- obwohl es auch dort *sichere* Alternativen gibt -- macht man das bei .NET-Anwendungen bestimmt üblicherweise nicht so. Unter `System.Data` gibt es eine Klassenhierarchie für Datenbanken und `System.Data.Common.DbParameter` für Parameter in Abfragen. Ausserdem gibt es bei C# 3.0 noch LINQ (Language Integrated Query).

Wenn man sich an Sachen gewöhnt und die in jeder Programmiersprache weiterbenutzen will, sollte man die Finger vom Programmieren lassen, oder zumindest bei der Sprache zu bleiben, in der man das so gelernt hat. Eine Programmiersprache zu können, bedeutet nicht nur die Syntax zu kennen, sondern auch Lösungen in der für die Sprache idiomatischen Weise zu formulieren, und nicht Idiome aus Sprache X in die Syntax von Sprache Y zu pressen. Wobei das Einfügen von Werten in Zeichenketten mit SQL-Anweisungen "von Hand" in keiner Programmiersprache der bevorzugte Weg sein sollte -- das ist ganz einfach ein Sicherheitsrisiko. Einfügen und escapen/quoten sollte man entsprechenden Bibliotheksfunktionen überlassen, um SQL-Injections zu verhindern.

Ansonsten würde ich, wie Hyperion ja auch schon angeregt hat, eher auf ein ORM oder zumindest eine Abstraktion von SQL wie SQLAlchemy setzen. Dann ist man unabhängiger von den SQL-Eigenheiten eines bestimmten DBMS und kann Tabellen/Daten einfacher mit Objekten verbinden.
The Hit-Man
User
Beiträge: 435
Registriert: Montag 20. Februar 2006, 18:11
Wohnort: Menden / Sauerland
Kontaktdaten:

Ausserdem gibt es bei C# 3.0 noch LINQ (Language Integrated Query).
das hatte ich mir vor einem Jahr auch schon mal angesehen, allerdings mußte ich noch auf .NET 2.0 programmieren, fiel also weg.
Naja, bei der Sprache bleiben, die ich gelernt hatte, hmmm, das wäre ja PHP, die kann ich getrost vergessen wenn es nicht wirklich um Web-Anwendungen geht. Sonst habe ich nie wirklich eine Sprache gelernt, war ja auch eher nur ein Hobbyprogrammierer. Soll nicht heißen, das ich nichts auf die Beine gestellt hätte. Für mich persönlich haben mir meine kleinen Python Scripte oder Bash Scripte oder auch kleine C# Anwendungen immer ausgereicht. Unter C++ habe ich dann mal nen kleines Sternen Demo mit SDL programmiert und auch unter PyGame. Dafür fand ich auch ne menge Dokus. Datenbaken waren noch nie so meine Welt, da ich immer kleinere Problemchen damit hatte und auch nie wirklich gebraucht hatte.
Aber ich glaube, das sprengt hier jetzt fast den Rahmen.
Antworten