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
Suche DB-Interface ohne Installation
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo ice2k3!ice2k3 hat geschrieben:Ich werde es jetzt mal mit dem PG8000 versuchen. Aber ist das überhaupt kompatibel mit Python 2.3 ?
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
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
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!
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!
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...
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...
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo ice2k3!ice2k3 hat geschrieben:Auch wieder die Sachen mit @
Die habe ich übersehen. --> somit kannst du pg8000 nicht für dich einsetzen. Das zu ändern ist zu viel Arbeit.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo ice2k3!ice2k3 hat geschrieben:Es handelt sich um die Steuerungen von CNC Fräsmaschinen mit einer festen Linux-Konfiguration.
Aber jetzt verstehe ich dich nicht mehr. Also ehrlich!
Wenn ich ein fix vorgegebenes Linux mit einer fix vorgegebenen Python-Version verwenden muss, dann kompiliere ich mir für dieses Ding den Schnittstellentreiber und fertig!
Für alle anderen Anwendungsfälle sollen sich die Anwender den Treiber installieren und nicht rummotzen. Und im Programm kannst du ja prüfen, ob das Programm mit Python 2.3 unter Linux XY ausgeführt wird. Wenn das der Fall ist, dann verwendest du den vorkompilierten Treiber und wenn nicht, dann verwendest du das installierte Python mit dem dafür installierten Treiber.
Mache die Sache bitte nicht komplizierter als sie ist.
Probiere es einfach zuerst mit Psycopg2 und wenn das nicht funktioniert mit Psycopg1.
http://www.initd.org/pub/software/psycopg/
mfg
Gerold
PS: Vielleicht fragst du dich, wie du so einen Treiber installieren kannst. Installiere dir VirtualBox. In VirtualBox installierst du die Linux-Distribution in der Version, die auf der CNC-Maschine eingesetzt wird. Dort installierst du den Treiber mit den für die Distribution üblichen Mitteln. Schon hast du einen Treiber den du verwenden kannst.
Die andere Möglichkeit -- wenn du genau weißt, welche Distribution eingesetzt wird, dann kannst du dir einfach das entsprechende Installationspaket des Treibers beim Distributor herunterladen und auspacken. Dort findest du dann alle benötigten, kompilierten Dateien, die du in dein Projekt integrieren kannst.
Usw.
Was wird für eine Linux-Distribution in welcher Version eingesetzt?
.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Ich habe ja gar keinen Zugriff auf das Linux (ist eine spezielle Distribution, keine gängige). Eventuell sogar ohne Compiler. Wie soll ich das denn dann machen?
Ist vielleicht eine ältere pg8000 Version kompatibel?
(Die Seite ist bei mir immer noch blockiert, hab nur die aktuelle Version von der EDV bekommen). Die Version 1.05 fand ich auf einer anderen Seite, die hat auch noch die @
http://pybrary.net/pg8000/pg8000-1.04.tar.gz
http://pybrary.net/pg8000/pg8000-1.03.tar.gz
http://pybrary.net/pg8000/pg8000-1.02.tar.gz
Ist vielleicht eine ältere pg8000 Version kompatibel?
(Die Seite ist bei mir immer noch blockiert, hab nur die aktuelle Version von der EDV bekommen). Die Version 1.05 fand ich auf einer anderen Seite, die hat auch noch die @
http://pybrary.net/pg8000/pg8000-1.04.tar.gz
http://pybrary.net/pg8000/pg8000-1.03.tar.gz
http://pybrary.net/pg8000/pg8000-1.02.tar.gz
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo!
Vielleicht fragst du dich, wie du so einen Treiber installieren kannst. Installiere dir VirtualBox. In VirtualBox installierst du die Linux-Distribution in der Version, die auf der CNC-Maschine eingesetzt wird. Dort installierst du den Treiber mit den für die Distribution üblichen Mitteln. Schon hast du einen Treiber den du verwenden kannst.
Die andere Möglichkeit -- wenn du genau weißt, welche Distribution eingesetzt wird, dann kannst du dir einfach das entsprechende Installationspaket des Treibers beim Distributor herunterladen und auspacken. Dort findest du dann alle benötigten, kompilierten Dateien, die du in dein Projekt integrieren kannst.
Usw.
Was wird für eine Linux-Distribution in welcher Version eingesetzt?
Oder frage den Hersteller der Maschine, ob für irgend eine Datenbank eine Python-Schnittstelle installiert wurde? Welche Möglichkeit sieht der Hersteller, um von Python aus auf eine Datenbank zuzugreifen?
Wenn du überhaupt keine Informationen bekommst, dann kannst du ja immer noch auf die Datenbanklösung verzichten. So eine CNC-Maschine kannst du ja auch mit einer Textdatei füttern. Wie und was, hängt natürlich von deiner Anwendung ab.
mfg
Gerold
PS: pg8000 kannst du getrost vergessen. Das ist ziemlich neu. Ich glaube nicht, dass eine ältere Version laufen wird.
.
Vielleicht fragst du dich, wie du so einen Treiber installieren kannst. Installiere dir VirtualBox. In VirtualBox installierst du die Linux-Distribution in der Version, die auf der CNC-Maschine eingesetzt wird. Dort installierst du den Treiber mit den für die Distribution üblichen Mitteln. Schon hast du einen Treiber den du verwenden kannst.
Die andere Möglichkeit -- wenn du genau weißt, welche Distribution eingesetzt wird, dann kannst du dir einfach das entsprechende Installationspaket des Treibers beim Distributor herunterladen und auspacken. Dort findest du dann alle benötigten, kompilierten Dateien, die du in dein Projekt integrieren kannst.
Usw.
Was wird für eine Linux-Distribution in welcher Version eingesetzt?
Oder frage den Hersteller der Maschine, ob für irgend eine Datenbank eine Python-Schnittstelle installiert wurde? Welche Möglichkeit sieht der Hersteller, um von Python aus auf eine Datenbank zuzugreifen?
Wenn du überhaupt keine Informationen bekommst, dann kannst du ja immer noch auf die Datenbanklösung verzichten. So eine CNC-Maschine kannst du ja auch mit einer Textdatei füttern. Wie und was, hängt natürlich von deiner Anwendung ab.
mfg
Gerold
PS: pg8000 kannst du getrost vergessen. Das ist ziemlich neu. Ich glaube nicht, dass eine ältere Version laufen wird.
.
Zuletzt geändert von gerold am Dienstag 20. Januar 2009, 11:38, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo!
Zu PG8000 --> siehe vorherige Antwort.
---
Noch eine Möglichkeit, um total auf die "direkte" Datenbankschnittstelle verzichten zu können:
Schreibe dir einen XMLRPC-Server, der direkt auf dem Computer läuft, auf dem auch PostgreSQL läuft (Beispiele findest du hier im Forum). Von der Linux-Maschine aus kannst du per XMLRPC Verbindung zur Server-Maschine aufnehmen und Daten abfragen. Die Arbeit erledigt dann der XMLRPC-Server.
Und XMLRPC funktioniert ohne zusätzliche Installation auch unter Python 2.3
mfg
Gerold
Zu PG8000 --> siehe vorherige Antwort.
---
Noch eine Möglichkeit, um total auf die "direkte" Datenbankschnittstelle verzichten zu können:
Schreibe dir einen XMLRPC-Server, der direkt auf dem Computer läuft, auf dem auch PostgreSQL läuft (Beispiele findest du hier im Forum). Von der Linux-Maschine aus kannst du per XMLRPC Verbindung zur Server-Maschine aufnehmen und Daten abfragen. Die Arbeit erledigt dann der XMLRPC-Server.
Und XMLRPC funktioniert ohne zusätzliche Installation auch unter Python 2.3
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Zum vorkompilierten pyscopg:
Unter Win hab ich es jetzt zum Laufen bekommen, war allerdings auch recht umständlich (musste noch zusätzlich mxBase installieren und hab die entsprechenden Module dann aus dem lib Ordner geholt und mxBase wieder runtergeschmissen.)
Wie genau muss denn beim Kompilieren die Plattform sein. Ich denke es ist ein modifiziertes Ubuntu. Brauche ich dann einfach eine Debian-Version von pyscopg. Wenn ja, wo bekomme ich die her?
Unter Win hab ich es jetzt zum Laufen bekommen, war allerdings auch recht umständlich (musste noch zusätzlich mxBase installieren und hab die entsprechenden Module dann aus dem lib Ordner geholt und mxBase wieder runtergeschmissen.)
Wie genau muss denn beim Kompilieren die Plattform sein. Ich denke es ist ein modifiziertes Ubuntu. Brauche ich dann einfach eine Debian-Version von pyscopg. Wenn ja, wo bekomme ich die her?
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Ich verstehe den Ablauf / Aufbau immer noch nicht ganz: Die Linux-Büchse steuert die CNC-Maschine? Wieso muss da eine Applikation mit DB-Anbindung drauf laufen? Was hat die Anwendung mit der CNC-Steuerung zu tun?
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo ice2k3!ice2k3 hat geschrieben:Unter Win hab ich es jetzt zum Laufen bekommen, war allerdings auch recht umständlich
Unter Windows muss man es nicht selber kompilieren. Siehe: http://www.stickpeople.com/projects/python/win-psycopg/
Das kommt auf die exakte Linux-Version an. Man kann Debian Quellen verwenden, aber vielleicht findet man auch das passende Ubuntu-Paket.ice2k3 hat geschrieben:Ich denke es ist ein modifiziertes Ubuntu. Brauche ich dann einfach eine Debian-Version von pyscopg. Wenn ja, wo bekomme ich die her?
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
-
- Python-Forum Veteran
- Beiträge: 16025
- Registriert: Freitag 20. Juni 2003, 16:30
- Kontaktdaten:
Die werden ja auch nicht verschwinden, der Autor hat kein Interesse an 2.3. Du kannst höchstens die Dokoratoren in die Funktionswrapper umbauen, aber das ist recht viel Arbeit da es vermutlich nicht alles damit getan ist und vermutlich mehr als es eigentlich wert ist.ice2k3 hat geschrieben:Die Version 1.05 fand ich auf einer anderen Seite, die hat auch noch die @
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo!
Mir gefällt die Idee mit der Zwischenschicht (XMLRPC, JSONRPC, Pyro http://pyro.sourceforge.net/, ...) immer besser. Denn damit kannst du alles auf dem Server erledigen. Die Daten können mit XMLRPC, JSONRPC, Pyro,... oderwasweisichnochalles übermittelt werden. Es muss kein spezieller Datenbanktreiber installiert werden.
So umgehst du das Problem mit dem Treiber und dessen Abhängigkeiten, die eventuell gegeben sein müssen.
mfg
Gerold
Mir gefällt die Idee mit der Zwischenschicht (XMLRPC, JSONRPC, Pyro http://pyro.sourceforge.net/, ...) immer besser. Denn damit kannst du alles auf dem Server erledigen. Die Daten können mit XMLRPC, JSONRPC, Pyro,... oderwasweisichnochalles übermittelt werden. Es muss kein spezieller Datenbanktreiber installiert werden.
So umgehst du das Problem mit dem Treiber und dessen Abhängigkeiten, die eventuell gegeben sein müssen.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Von dieser Lösung bin ich leider nicht ganz so begeistert. Hätte ja dann viel größeren Aufwand.
Hab gerade auch noch Probleme mit Windows und den Zugriff auf den SQL Server. psycopg funktioniert nur mit der alten Version und benötigt ein zusätzliches Modul mit einer zwielichtigen Lizenz (Egenix mx base).
Habe dann mal PyGreSQL installiert. Bekomme beim import folgenden Fehler:
import _pg
ImportError: DLL load failed: Das angegebene Modul wurde nicht gefunden.
libpg.dll konnte nicht gefunden werden
Müsste das in dem Binary-Packet eigentlich mit dabei sein? Habe keine Admin-Rechte, vielleicht werden die DLLs einfach nicht mit installiert?
Hab gerade auch noch Probleme mit Windows und den Zugriff auf den SQL Server. psycopg funktioniert nur mit der alten Version und benötigt ein zusätzliches Modul mit einer zwielichtigen Lizenz (Egenix mx base).
Habe dann mal PyGreSQL installiert. Bekomme beim import folgenden Fehler:
import _pg
ImportError: DLL load failed: Das angegebene Modul wurde nicht gefunden.
libpg.dll konnte nicht gefunden werden
Müsste das in dem Binary-Packet eigentlich mit dabei sein? Habe keine Admin-Rechte, vielleicht werden die DLLs einfach nicht mit installiert?
Zuletzt geändert von ms4py am Dienstag 20. Januar 2009, 15:56, insgesamt 1-mal geändert.
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo ice2k3!ice2k3 hat geschrieben:Von dieser Lösung bin ich leider nicht ganz so begeistert. Hätte ja dann viel größeren Aufwand.
Das ist ein sehr geringer Aufwand gegenüber den Versuchen, die du derzeit durchführst. Aber unabhängig davon.
Installieren von PostgreSQL und psycopg2 unter Windows XP bzw. Windows Vista:
0.) Den alten Balast loswerden: psycopg, psycopg2 und PostgreSQL deinstallieren und den Computer neu starten.
1.) Installiere dir unter Vista auf keinen Fall "Python für 64 Bit". Nimm weiterhin "Python für 32 Bit". Installiere dir das neueste Python 2.6.x. Spiele unter Windows gar nicht erst mit Python 3. Das bringts nicht. Wenn es irgendwelche Inkompatibilitäten gibt, dann lassen die sich im Nachhinein in kürzester Zeit im Programm anpassen. http://python.org/ftp/python/2.6.1/python-2.6.1.msi
2.) Installiere PostgreSQL. Am Besten nimmst du den "pgInstaller" und nicht den "One click installer". Dessen Sinn habe ich sowiso noch nicht verstanden. Nimm die Version "8.3.4" http://wwwmaster.postgresql.org/downloa ... .3.4-1.zip, denn dafür gibt es einen passenden Windows-Treiber für Python. Es wird wahrscheinlich in den nächsten Tagen einen neuen Treiber für 8.3.5 geben, aber darauf muss man ja nicht warten. Das kann man später updaten.
3.) Installiere "psycopg2". Das Findest du für Python 2.6.x hier: http://www.stickpeople.com/projects/pyt ... elease.exe
Diese EXE-Datei musst du nur mit einem Doppelklick ausführen und schon ist die Schnittstelle installiert.
4.) Ausprobieren: http://www.python-forum.de/topic-12304.html
mfg
Gerold
Zuletzt geändert von gerold am Freitag 13. März 2009, 19:28, insgesamt 1-mal geändert.
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Programme, die ich unter Windows entwickle, sollten ja auch mit der Steuerung kompatibel sein, deshalb kommt ein Upgrade momentan nicht in Frage.
Nochmal zu meinem Problem mit PyGreSQL. Kann es sein, dass bei dem Binary-Paket nicht alles mitinstalliert werden (wegen mangelden Admin-Rechten).
Nochmal zu meinem Problem mit PyGreSQL. Kann es sein, dass bei dem Binary-Paket nicht alles mitinstalliert werden (wegen mangelden Admin-Rechten).
- gerold
- Python-Forum Veteran
- Beiträge: 5555
- Registriert: Samstag 28. Februar 2004, 22:04
- Wohnort: Oberhofen im Inntal (Tirol)
- Kontaktdaten:
Hallo ice2k3!ice2k3 hat geschrieben:Habe keine Admin-Rechte, vielleicht werden die DLLs einfach nicht mit installiert?
Dann brauchst du gar nicht erst versuchen, PostgreSQL, Python und Psycopg2 zu installieren. Ohne Adminrechte auf der Windows-Schüssel wird das nie etwas werden.
mfg
Gerold
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.