Verfasst: Freitag 13. März 2009, 10:27
Solange man nicht zu viele gleichzeitige Writes in die Datenbank hat, ist das ok.
Seit 2002 Diskussionen rund um die Programmiersprache Python
https://www.python-forum.de/
Ja, das ist klar.Leonidas hat geschrieben:SQLite kommt mit parallelen Reads zurecht, mit parallelen Writes eher nicht.
Aber der interne Lock von Sqlite dürfte doch eigentlich reichen?sqlite3.connect(database[, timeout, isolation_level, detect_types, factory])
When a database is accessed by multiple connections, and one of the processes modifies the database, the SQLite database is locked until that transaction is committed. The timeout parameter specifies how long the connection should wait for the lock to go away until raising an exception. The default for the timeout parameter is 5.0 (five seconds).
Ganz konkret: Jede Maschine sendet alle 5 Sekunden ca. 10 SQL Befehle, die die DB verändern. Oberstes Maximum sind 50 Maschinen.ice2k3 hat geschrieben: Anzahl Clients: Es könnten ca. bis zu 25 Maschinen Anfragen senden (Standard 5-10) und mehrere PC-Clients. (Alle haben vermutlich ein 5 Sekunden Intervall, wobei die Datenmenge auf der PC Seite entsprechend höher ist, weil diese alle Daten empfangen und die Maschinen nur jeweils ihre spezifischen senden.)
1. Was heißt "bedingt"?lunar hat geschrieben: Wenn du natürlich eine Abstraktionsschicht wie SQLAlchemy verwenden würdest, bräuchtest du dir darum nur bedingt Sorgen machen, da die eigentliche Datenbank austauschbar wäre.
Naja, wenn du ein ineffizientes Datenmodell oder ineffiziente Ausdrücke nutzt, dann nutzt dir auch ein gutes DBMS nicht so viel1. Was heißt "bedingt"?lunar hat geschrieben:Wenn du natürlich eine Abstraktionsschicht wie SQLAlchemy verwenden würdest, bräuchtest du dir darum nur bedingt Sorgen machen, da die eigentliche Datenbank austauschbar wäre.
SQLAlchemy an sich ist nicht komplex und bringt auch andere Vorteile, wie z.B. die Möglichkeit, SQL-Abfragen ohne Zeichenketten-Manipulation zusammensetzen zu können. Aber wie du das in dein Programm integrierst ... woher soll ich denn das wissen? Wenn deine Architektur den Dienst vom Datenbankzugriff sauber trennt, dann ist eine zusätzliche Schicht kein Problem, wenn du den Datenbankzugriff aber wild über den gesamten Code verstreut hast, wird das natürlich schwerer2. Denkst du, dass das problemlos in meine bestehende Architektur eingefügt werden kann (Remotezugriffe auf die DB mit Pyro).
Sich in SQLAlchemy einzuarbeiten, ist nicht aufwendig, die Dokumentation bietet gute Tutorials. Es in eine Anwendung zu integrieren, kann dagegen sehr aufwendig sein, wenn die Anwendung schlecht strukturiert ist3. Ist es sehr aufwendig, sich in SQLAlchemy einzuarbeiten, das in das Programm zu integrieren und alle SQL Statements zu ersetzen?
Ich hab das ganze mit Windows 7 versucht (und den inzwischen aktuellen Versionen (python 2.7.2 / PostGreSQL 9.0 / psycopg2-2.4.2.win32-py2.7-pg9.0.4-release.exe von http://www.stickpeople.com/projects/python/win-psycopg/). Bei der Installation erfolgt aber immer ein Abbruch:gerold hat geschrieben: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
Super, das Windows keine andere Fehlermeldung kreiiert. Hat jemand ne Idee, woran es liegen kann? Auf einem XP-Rechner hatte es super geklappt, aber bei meinem Windows7 streikt der Installer.psycopg2-2.4.2.win32-py2.7-pg9.0.4-release.exe funktioniert nicht mehr
Das Programm wird aufgrund eines Problems nicht richtig ausgeführt. Das Programm wird geschlossen und Sie werden benachrichtigt, wenn eine Lösung verfügbar ist.