wie beam ich mich schnell auf die Postgresql?

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

@archilles_69
Ist schon klar, man muss genau abwaegen, ob selbstmachen besser/billiger ist, als gekauft.
Mir gings jetzt erstmal um die relationale Datenbank postgreSQL. Dann hat mich die Firma, fuer die ich ¨kaempfe¨ beauftragt, mal zu suchen, was es so heutzutage im Bereich Buchhaltung gibt.
Da ist naemlich vor einiger Zeit jemand auf eine Messe ¨Linux-Tage" geschickt worden und der kam mit Qt4 zurueck. Dann hat er eine ganz einfache Rezepturverwaltung geschrieben und als er merkte, das es doch nicht so einfach mit PyQt4 war, hat er das Schiff verlassen.
Da der Kunde aber in Mexiko auf seiner Anlage sass und die Maschine nur mit dem Prugrammiergeraet fahren konnte, bin ich hin und hab den ganzen Kram rausgeworfen und als Oberflaeche tkinter genommen.
Damit nicht wieder solche Luftnummern passieren, wollen wir jetzt vorher genau abklopfen, was Sache ist.
Nun bin ich quasi auf Planet PostgreSQL angekommen, denn ich kann eine Datenbank erzeugen und befuellen und abfragen.
Fuer die Buchhaltung oder die Lagerverwaltung lassen wir uns was zusaetzliches einfallen.
Ich bin bisher in diesem Forum sehr gut klar gekommen und solche etwas infantilen Beitraege wie von mkesper lassen wir einfach links liegen.
Bis dann!
Fritz 8) 8)
achilles_69
User
Beiträge: 21
Registriert: Dienstag 31. März 2009, 14:05
Wohnort: Bielefeld

@3ff
PyQt4 hatte ich für ein Projekt verwendet, bei dem die Applikation sowohl unter Linux als auch unter Windows laufen musste. Das hat auch perfekt funktioniert. Aber die Einstiegshürde bei PyQt4 fand ich auch ziemlich hoch, ich sage nur Signals und Slots... bis ich das richtig funktionieren hatte...
Ich hatte mich für das Projekt aber für PySQL entschieden, weil die Integration mit dem restlichen Framework sehr gut war. PyQt4 ist in der Pythonwelt ein gewisser Fremdkörper, wegen der Abbildung der C++-Typen auf Python. Bei dem ganzen gecaste kann man schon mal den Überblick verlieren. Ich wollte das Projekt aber auch nicht mit C++ machen, weil die Entwicklung schnell gehen sollte.

Was PostgreSQL angeht, da bin ich immer wieder begeistert von. Ich musste mich gezwungener Maßen mal wieder mit mySQL auseinandersetzen: da haben sich mir die Nackenhaare aufgestellt, da Konsistenz dort eigentlich ein Fremdwort ist.

Meiner Meinung nach spielt PostgreSQL da doch in einer anderen Liga und kann sich durchaus auch mit den ganz großen Playern messen. Insbesondere was Konsistenz angeht ist man da auf der sicheren Seite und das ist für Buchhaltung absolut lebensnotwendig.

Ein schönes Wochenende wünsche ich...
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

@achilles_69
Also Qt ist schon der Stand der Technik, PyQt4 auch aber, ich hatte schon hier mit 1 Moderator 1 kleines Kaempfchen- wegen der DOKU von riverbankcomputing
Fuer mich war Python auch relativ neu (von 1/2 Jahr) und ich hab auf Auftrag alle hier taetigen auf Python umgestellt.
hauptschwerpunkt der Taetigkeit ist SPS und die Qt4 mit dem intelligenten Programmgenerator ist schon bestechend.
Als wir aber feststellten, das die DOKU in cpp geschrieben war, sind wir 1mal 1 Schritt zurueck getreten.
Ich kann nicht hochbezahlte Elektroing. auf Python umstellen und dann feststellen, das die dann auch noch fitt in cpp sein muessen.
Was sind denn void virtual functions oder dies Overloading?
Dann fanden wir heraus, das Riverbankcomputing sog. Boost-Bib. benutzte um die cpp einzuwickeln um sie sie von Python aus anzusprechen.
Ich will das ganze auch nicht wieder hier ausrollen, sonst gibts wieder 1 Stubser.
Ergebnis ist: der Big Boss sieht nicht ein, das die ganze Crew auf cpp umgestellt werden muss um PyQt4 einsetzen zu koennen.
Diese Sachen erzaehlt Ihnen keiner auf diesen "lInux-Tage" oder von Nokia/Trolltech
Also ist PyQt4 erstmal auf Halt gesetzt.
Es gibt ja auch im Bereich S7 gute Visiualisierungssoftware, was will ich machen.
Ich bin ja froh das ich "nur" mit Prozessleittechnik zu tun habe. Der IT-Markt fuer intelligente Handys oder iPhones boomt. Da ist es natuerlich wichtig 1 Platform zu haben, die auf mehreren Betriebssystem aufsetzt.
Android und Symbian und hast du nicht gehoert.
So ist es halt. Jetz gibts 1 schoenen Espresso und dann ist Wochenende.
Guude!
Fritz 8) 8)
Benutzeravatar
noisefloor
User
Beiträge: 4327
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,

@3ff: Die eigentliche Frage war doch, wie du PostgreSQL aus Python raus nutzt, oder? Ist das denn jetzt für dich zur Zufriedenheit beantwortet?

Gruß, noisefloor
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

@noisefloor
zufrieden.
ich weiss, wie es funktioniert, die Datenbank wird eroeffnet und kann befuellt werden.
Dies Forum lebt davon, dass die Kollegen gezielte Hinweise geben, die auch zutreffend sind und nicht in den Wald fuehren.
Nun hab ich mit Datenbanken schon unter DOS gearbeitet als VMS noch kaum erschwinglich war fuer den kleinen Betrieb. Das besondere an dieser Datenbank ist eben, das es ne Client-Sever Loesung ist und die uebers Netz geht. Das lauft ueber den (apache) server, dann muessen ausgefeilte Verschluesselungstechniken greifen (SSH oder aehnlich).
Stichwort CGI.
Das ist ja alles schon da im Laufe der Jahre.
Python hilft mir, die Datenbank zu manipuliern. Ich hab auch pgadmin3 runtergeladen, aber das soll nicht so gut sein.
Der Verwaltungsaufwand bei PostgreSQL ist erheblich groesser als bei DBase.
Wie der Mitstreiter achilles_69 ausgefuehrt hat, waere PostgreSQL der Datenbank MySQL vorzuziehen. Man kann auch datenbanken von Oracle oder anderen nehmen, aber PostgreSQL ist halt public domain und scheint eben sehr stabil zu sein.
Das naechste wird sein, die datenbank zu fuellen und da werd ich ne Anwendung fuer die deutsche MWST nehmen, das ist naemlich einfach, man braucht nur 2 Konten, naemlich Vorsteuer und berechnete MWST.
Das Saldo ist die Zahllast zum Finanzamt.
Ist das Saldo negativ, gibts Kohle vom FA zurueck, anderenfalls will das FA Geld sehen.
dem Finazamt ist es egal, mit welcher datenbank oder welchem Schema man arbeitet, nur die Betraege muessen stimmen.
Mogeln geht auch nicht, denn die haben ausgefeilte Pruefroutinen und dann gibts noch die Steuerfahndung und den Zoll...
Wir sind ja nicht in GR sic standibus.
Zum Problem Buchhaltung werd ich noch was ueberlegen muessen, denn das ist doch etwas komplizierter.
Da muss man mit Creditoren und Debitoren arbeiten, aber letztlich wird auch dabei die datenbank gefuellt und abgefragt und und...
Guude!
Fritz 8) 8)
BlackJack

PostgreSQL ist nicht "public domain". Die haben eine eigene Lizenz: http://www.postgresql.org/about/licence
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

@BlackJack,
ok PostgreSQL hat eine Lizens nach der OSL und ist nicht public domain wie z.B. Linux.
Es wird aber kostenlos abgegeben, man braucht keine Gebuehren zu zahlen wie bei Oracle oder andere Datenbankschmieden.
Sie erwarten nur Donations also Spenden.
Guude!
Fritz :P
BlackJack

@3ff: Linux ist auch nicht "public domain" sondern steht unter der GPL. :roll:
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

@BlackJack
Yea,Yea
aber dafuer ist es (fast) virusfrei und hat immerhin 5% Marktanteil.
Fuer meinen privaten Kram reicht es voellig aus
Schoenen Sonntag
Fritz :D :D
Benutzeravatar
noisefloor
User
Beiträge: 4327
Registriert: Mittwoch 17. Oktober 2007, 21:40
Wohnort: WW
Kontaktdaten:

Hallo,
aber dafuer ist es (fast) virusfrei und hat immerhin 5% Marktanteil
Das kannst du so nicht sagen... Bei Servern und im Supercomputing ist der Anteil höher... ;-)

Gruß, noisefloor
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

3ff hat geschrieben:2. Wie muss ich Abfragen (Queries) formulieren, um meine- zu erstellende Datenbank- abzufragen? Gibts da Beispiele in Python?
Hallo Fritz!

http://www.python-forum.de/viewtopic.php?f=11&t=12304

mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

Guten Morgen Gerold,
mein letzter Beitrag zu diesem Thema ist in Codesnippets gelandet.
Das beste wird sein, ich mach hier 1 neue Rubrik auf, damit man leichter auf Deinen Beitrag stößt.
Also wie gesagt, das beispiel läuft ich hab nur Schwierigkeiten mit den Umlauten.
Nochmal vielen Dank für Deinen Beitrag.
Guude!
Fritz 8) 8)
achilles_69
User
Beiträge: 21
Registriert: Dienstag 31. März 2009, 14:05
Wohnort: Bielefeld

Hallo Fritz,

das Problem mit den Umlauten kommt mir bekannt vor...
Hast Du vielleicht das client_encoding nicht richtig gesetzt?
zum Beispiel

Code: Alles auswählen

conn = psycopg2.connect(...)
conn.set_client_encoding('UTF-8')
(In die Klammer bei connect natürlich die entsprechenden Verbindungsdaten eintragen!)

für UTF-8?
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

Die Datei heißt pyside vom 17.8.2010
Die müßte in der Rubrik Snippets erscheinen!
Scau Die das mal an, bitte.
Fritz
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

bins nochmal.
Du mußt auf pastebin gehen!
Ich weiß nicht, wie der Gerold es gschafft hat mit den Codesnippets gestern.
Ich krig das nicht hin.
Meine Datei heißt pyside, was etwas verunglückt war, aber da findest Du sie in der pastebin.
Guude!
Fritz
Benutzeravatar
cofi
Python-Forum Veteran
Beiträge: 4432
Registriert: Sonntag 30. März 2008, 04:16
Wohnort: RGFybXN0YWR0

3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

@archilles_69 von 13.31
hat nichts bewirkt.
der String u"Ärztehaus"
wird zu u'\xc4rztehaus'
ohne Fehlermeldung.
ich vermute, das der Datenbankserver das nicht richtig umsetzt.
Tschau
Fritz
BlackJack

@3ff: Ich vermute Du möchtest Dich mit Python-Grundlagen beschäftigen, insbesondere mit dem Unterschied von `str()` und `repr()` und wie zum Beispiel die `str()`-Darstellung von Datenstrukturen wie Listen oder Tupeln erstellt werden. Ich vermute Du siehst da ein Problem das gar keines ist und interpretierst einfach nur Deine Ausgaben falsch.

Code: Alles auswählen

In [111]: u"Ärztehaus"
Out[111]: u'\xc4rztehaus'

In [112]: print u"Ärztehaus"
Ärztehaus

In [113]: print repr(u"Ärztehaus")
u'\xc4rztehaus'

In [114]: print [u"Ärztehaus"]
[u'\xc4rztehaus']
3ff
User
Beiträge: 191
Registriert: Dienstag 22. Dezember 2009, 12:54
Wohnort: Odenwald Sued-Hessen

@BlackJack
Bingo,
ich hab repr() ersetzt durch str()
dann gehts.
Nach meiner PYthonbibel ist Funktion repr() die druckbare Repräsentation eines objekts!
Also ausgedruckt hab ich die Geschichte noch nicht.
str() ist ein Stringobjekt.
Ich hatte schon was schlimmers vermutet,
der Postgresql client hat einen anderen zeichensatz als der Server.
da gibts 1 SQL kommando SHOW CLIENT_ENCODING;
das bringt UTF-8 zurück.
mit psql -l listet er die Datenbanken auf und deren Zeichenketten.
Da sehe ich bei mir Unterschiede.
dies kann man auch in der postgrsql.conf eintragen
da gibts unterschiedliche locale
lc_Messages ist der zeichensatz der Meldungen
lc_Collate ist der Zeichensatz des Sortierers.
Ich hab es noch nicht geschafft, heute nachmittag, das zu ändern.
Da muss man das system runterfahren und neu booten, weil postgresql auf Level 0 arbeitet in der Programmschlange. jetzt mach ich aber schluß für heute.
Grüße Fritz
:roll:
Antworten