Seite 1 von 3
Suche DB-Interface ohne Installation
Verfasst: Montag 19. Januar 2009, 09:41
von ms4py
Hallo.
Suche eine Schnittestelle zu einer Datenbank, die ohne Installation läuft.
Datenbank muss a) als Server laufen können und b) Freeware / OpenSource sein.
Pythonversion ist leider zwangsläufig die 2.3
Hoffe ihr könnt mir helfen.
Verfasst: Montag 19. Januar 2009, 10:11
von Hyperion
Was meinst Du mit "ohne Installation"? Dateien in irgend ein Verzeichnis kopieren und das soll dann out of the box lauffähig sein? (Was man ja dennoch Installation nennen könnte

)
Ich glaube da wirst Du Pech haben!
Zudem: Die Installation eines RDBMS ist ja idR das geringste Problem - die richtige (sichere) Konfiguration kostet da eher Zeit und Nerven!
Was genau bezweckst Du denn? Ggf. fällt uns ja ein workaround ein ...
Verfasst: Montag 19. Januar 2009, 10:22
von ms4py
War vielleicht nicht verständlich erklärt.
Die Datenbank kann ruhig zum Installieren sein. (Wobei z.B. MySQL durchaus problemlos portable laufen kann...)
Nur die Pythonschnittstelle nicht. Also dass man nur bestimmte Module als Ordner zu dem Programm hinzupackt und verbindet sich damit zur DB.
Das Programm muss halt mit der Standardbibliothek lauffähig sein.
Solche Dinge wie das Installieren mit build wie bei der MysqlDB Schnittstelle darf es halt nicht geben.
Verfasst: Montag 19. Januar 2009, 13:12
von ms4py
Nochmal ganz konkret:
Suche eine Möglichkeit einer Datenbankverbindung mit der Python Standardbibliothek.
Ist sowas überhaupt möglich?
Verfasst: Montag 19. Januar 2009, 13:19
von lunar
Einfach gesagt: Nein.
Genauer gesagt, gibt es SQlite (was deinen Bedürfnissen wohl nicht entspricht) oder die Möglichkeit, das Protokoll deines DBMS über Sockets zu implementieren.
Re: Suche DB-Interface ohne Installation
Verfasst: Montag 19. Januar 2009, 13:19
von gerold
Hallo!
Für Windows, Linux, ...?
Für PostgreSQL gibt es z.B.
http://pybrary.net/pg8000/
mfg
Gerold

Verfasst: Montag 19. Januar 2009, 13:24
von lunar
Das ist aber nicht in der Standardbibliothek

Verfasst: Montag 19. Januar 2009, 13:33
von ms4py
Ist es sehr komplex, so ein Protokoll über Sockets zu realisieren? Wo finde ich dazu entsprechende Spezifikationen?
Als DB kommen meiner Meinung in Frage: MySQL, PostgreSQL oder MS SQL Server.
Muss unter Linux UND Windows laufen.
Alternative wäre noch einen eigenen DB-Server in Python zu schreiben, der dann SQLite verwendet. Aber das wäre auch nicht einfacher wie die Socket-Realisierung, oder?
Verfasst: Montag 19. Januar 2009, 13:34
von gerold
lunar hat geschrieben:Das ist aber nicht in der Standardbibliothek

Hallo lunar!
Das Problem ist für den OP ja das Installieren (make && make install) und nicht das Dazukopieren des Treibers in das eigene Pythonprojekt. Man muss nur den "pg8000"-Ordner in den eigenen Projektordner kopieren und beim Verteilen des Programmes mitverteilen -- schon kann man pg8000 verwenden. Es muss nichts installiert werden.
So ähnlich würde es mit allen anderen Treibern funktionieren, wenn man für eine fix definierte Plattform entwickelt. Dann kompiliert man den Treiber für die entsprechende Plattform und liefert diesen einfach mit seinem eigenen Projekt mit.
lg
Gerold

Verfasst: Montag 19. Januar 2009, 13:35
von gerold
ice2k3 hat geschrieben:Ist es sehr komplex, so ein Protokoll über Sockets zu realisieren?
Hallo ice2k3!
Ja, das ist sehr komplex. Sehr sehr sehr sehr sehr viel komplexer als PostgreSQL installieren und PG8000 verwenden.
ice2k3 hat geschrieben:Alternative wäre noch einen eigenen DB-Server in Python zu schreiben, der dann SQLite verwendet. Aber das wäre auch nicht einfacher wie die Socket-Realisierung, oder?
Das ist nicht so komplex wie das direkt über Sockets zu machen. Aber warum soll man sich das antun?
mfg
Gerold

Verfasst: Montag 19. Januar 2009, 13:36
von ms4py
gerold hat geschrieben:So ähnlich würde es mit allen anderen Treibern funktionieren, wenn man für eine fix definierte Plattform entwickelt. Dann kompiliert man den Treiber für die entsprechende Plattform und liefert diesen einfach mit seinem eigenen Projekt mit.
Für die Linux Plattform kann ich leider nichts kompilieren, diese Möglichkeit scheidet aus.
Aber das pg8000 schau ich mir mal an, könnte funktionieren.
Verdammt! Seite ist blockiert (Grund: "Pharmacy" ?!)
Könnte mir das jemand als *zip zukommen lassen? >>PN
Verfasst: Montag 19. Januar 2009, 13:43
von gerold
ice2k3 hat geschrieben:Verdammt! Seite ist blockiert (Grund: "Pharmacy" ?!)
Wende dich an den, der dir die Seite blockiert.

Auf dieser Seite
http://pybrary.net/pg8000/ ist absolut nichts Unanständiges zu finden.
Verfasst: Montag 19. Januar 2009, 13:55
von cofi
Wobei es wohl fragwürdig ist Zugang zu Arzeimitteln zu blockieren oO. Ich kenne ja die Filterbrgründung "Malaysian Porn" auf deutschen Seiten ... aber Arzneimittel? OO
Verfasst: Montag 19. Januar 2009, 14:32
von Pekh
Du hast n guten Spamfilter, oder?
Weil sonst wüßtest du, um welche "Arzneimittel" es hier geht ...
Verfasst: Montag 19. Januar 2009, 14:58
von cofi
Naja das ist mir schon klar - so gut trainiert ist mein SpamAssasin leider nicht

, aber ich sehe da absolut keinen Nutzen den Zugang zu sperren.
Aber wir driften stark off-topic, denn eine Debatte über Zensur hat mit einem DB-Interface dann doch nichts zu tun

Verfasst: Dienstag 20. Januar 2009, 08:42
von sma
Das
Protokoll von
mysql (Kommunikation über ein Socket) ist nicht sonderlich schwer zu implementieren. Am Aufwendigsten ist es noch, den Login hinzubekommen. SQL-Befehle werden quasi im Klartext geschickt, Resultsets kann man mit wenig Aufwand zerlegen. Kann man alles in reinem Python machen.
Stefan
Verfasst: Dienstag 20. Januar 2009, 09:03
von ms4py
Ich werde es jetzt mal mit dem PG8000 versuchen.
Aber ist das überhaupt kompatibel mit Python 2.3 ?
Verfasst: Dienstag 20. Januar 2009, 10:27
von gerold
ice2k3 hat geschrieben:Ich werde es jetzt mal mit dem PG8000 versuchen. Aber ist das überhaupt kompatibel mit Python 2.3 ?
Hallo ice2k3!
Ich habe auf die Schnelle nur das Fehlen des "decimal"-Moduls entdeckt. Dieses Modul ist bei Python 2.3 noch nicht mit dabei. Aber vielleicht genügt es, wenn du das "decimal"-Modul einer neueren Python-Version in den "pg8000"-Ordner kopierst.
Probiere es einfach mal aus.
mfg
Gerold

Verfasst: Dienstag 20. Januar 2009, 10:50
von Hyperion
Ohne die Diskussion in eine andere Richtung lenken zu wollen, oder die Sachlage anzweifeln zu wollen, aber: Gibt es denn wirklich keine Möglichkeit, ein neueres Python und/oder externe Module zu installieren? Wer genau gibt denn da die Vorgaben?
Anscheinend soll es doch irgend wie um einen Datenbankzugriff gehen. Sind das nicht arg viele Verränkungen, nur um das zu realisieren? Da rückt man doch weit vom eigentlichen Problem ab, nur um eines zu lösen, welches sich ohne diese Beschränkungen gar nicht ergibt!
Daher könnte es doch eher sinnvoll sein, die Zeit zur Aufhebung dieser Einschränkungen zu nutzen, anstatt da drum herum zu programmieren!
Ist nur so ein Einwurf - kann ja auch durchaus sein, dass es wirklich keine andere Möglichkeit gibt!
Verfasst: Dienstag 20. Januar 2009, 10:59
von ms4py
Es handelt sich um die Steuerungen von CNC Fräsmaschinen mit einer festen Linux-Konfiguration.
Nein, da kann ich nichts machen.
Naja, muss mal schauen, ob ich das pg8000 zum Laufen bringen.
Das Problem sind (außer die decimal) auch noch die finally statements und die mit @ (Was machen die überhaupt? Sind die notwendig?)
Die decimal lässt sich auch nicht 1:1 importieren

Auch wieder die Sachen mit @
Langsam wird das eine recht schwammige Sache...