Datenbanken

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Hallo,

da ich vorhabe etwas mit datenbanken zu programmieren, wollte ich euch mal fragen, was ihr so für Datenbanken benutzt und warum.
Am liebsten wären mir Datenbanken, die der User nicht installieren muss.

Greetz

Edit:
Ein Tutorial zu der Datenbank wär dann noch das non-plus-ultra :wink:
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

CrackPod hat geschrieben:Am liebsten wären mir Datenbanken, die der User nicht installieren muss.
Hi CrackPod!

SQLite ist der Tipp für Python. pySQLite wird sogar bei Python 2.5 mit dabei sein. So lange nicht mehrere Programme/Computer/Benutzer gleichzeitig auf die Datenbank zugreifen und in diese schreiben wollen, bist du damit sicher zufrieden.

SQLite legt die Daten in einer Datei ab -- gleich wie Access. Man muss also keinen eigenen Datenbankserver installieren. Und schnell ist es auch. (Mit korrekter Verwendung von Indexen ist es noch schneller.)

Hier ein paar interessante Links für dich:
- http://www.python-forum.de/topic-6157.html (suche nach "Daten in einer Datenbank verwalten")
- http://docs.python.org/dev/lib/module-sqlite3.html (New in version 2.5.)
- http://initd.org/tracker/pysqlite
- http://www.initd.org/pub/software/pysql ... guide.html

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

danke für die Links. SqLite hört sich gut an, aber gibt es auch ein deutsches Tutorial dazu bzw eine deutsche Doku?
Ich hab zwar MySQLerfahrung durch PHP, aber ich denke, das wird doch ein ganz anderes Bier sein :wink:

Greetz
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Nur mal so ne dumme Frage: Muss ich pysqlite installieren?
Ich hab mir mal ein Beispielsscript geschrieben, aber ich hab beim ausführen nen Fehler bekommen:

Code: Alles auswählen

Traceback (most recent call last):
  File "/home/gottesworkstation/Python/Adressenverwaltung.py", line 10, in -toplevel-
    from pysqlite2 import dbapi2 as sqlite3
ImportError: No module named pysqlite2
Dann hab ich mir die source Datein runtergeladen und wollts installieren:

Code: Alles auswählen

$ python setup.py build
running build
running build_py
creating build
creating build/lib.linux-i686-2.4
creating build/lib.linux-i686-2.4/pysqlite2
copying pysqlite2/__init__.py -> build/lib.linux-i686-2.4/pysqlite2
copying pysqlite2/dbapi2.py -> build/lib.linux-i686-2.4/pysqlite2
creating build/lib.linux-i686-2.4/pysqlite2/test
copying pysqlite2/test/__init__.py -> build/lib.linux-i686-2.4/pysqlite2/test
copying pysqlite2/test/dbapi.py -> build/lib.linux-i686-2.4/pysqlite2/test
copying pysqlite2/test/factory.py -> build/lib.linux-i686-2.4/pysqlite2/test
copying pysqlite2/test/hooks.py -> build/lib.linux-i686-2.4/pysqlite2/test
copying pysqlite2/test/regression.py -> build/lib.linux-i686-2.4/pysqlite2/test
copying pysqlite2/test/transactions.py -> build/lib.linux-i686-2.4/pysqlite2/test
copying pysqlite2/test/types.py -> build/lib.linux-i686-2.4/pysqlite2/test
copying pysqlite2/test/userfunctions.py -> build/lib.linux-i686-2.4/pysqlite2/test
running build_ext
building 'pysqlite2._sqlite' extension
creating build/temp.linux-i686-2.4
creating build/temp.linux-i686-2.4/src
gcc -pthread -fno-strict-aliasing -DNDEBUG -g -O3 -Wall -Wstrict-prototypes -fPIC -DMODULE_NA
ME="pysqlite2.dbapi2" -I/usr/include -I/usr/include/python2.4 -c src/module.c -o build/temp.l
inux-i686-2.4/src/module.o
In Datei, eingefügt von src/module.c:24:
src/connection.h:33:21: Fehler: sqlite3.h: Datei oder Verzeichnis nicht gefunden
In file included from src/module.c:24:
src/connection.h:38: Fehler: syntax error before »sqlite3«
src/connection.h:38: Warnung: kein Semikolon am Ende von »struct« oder »union«
src/connection.h:109: Fehler: syntax error before »}« token
src/connection.h:109: Warnung: »int« ist Standardtyp in Deklaration von »Connection«
src/connection.h:109: Warnung: Datendefinition hat keinen Typ oder Speicherklasse
src/connection.h:114: Fehler: syntax error before »*« token
src/connection.h:114: Warnung: Funktionsdeklaration ist kein Prototyp
src/connection.h:115: Fehler: syntax error before »*« token
src/connection.h:115: Warnung: Funktionsdeklaration ist kein Prototyp
src/connection.h:116: Fehler: syntax error before »*« token
src/connection.h:116: Warnung: Funktionsdeklaration ist kein Prototyp
src/connection.h:117: Fehler: syntax error before »*« token
src/connection.h:117: Warnung: Funktionsdeklaration ist kein Prototyp
src/connection.h:118: Fehler: syntax error before »*« token
src/connection.h:118: Warnung: Funktionsdeklaration ist kein Prototyp
src/connection.h:119: Fehler: syntax error before »*« token
src/connection.h:119: Warnung: Funktionsdeklaration ist kein Prototyp
src/connection.h:120: Fehler: syntax error before »*« token
src/connection.h:120: Warnung: Funktionsdeklaration ist kein Prototyp
src/connection.h:122: Fehler: syntax error before »*« token
src/connection.h:122: Warnung: Funktionsdeklaration ist kein Prototyp
src/connection.h:124: Fehler: syntax error before »*« token
src/connection.h:124: Warnung: Funktionsdeklaration ist kein Prototyp
src/connection.h:125: Fehler: syntax error before »*« token
src/connection.h:125: Warnung: Funktionsdeklaration ist kein Prototyp
In file included from src/module.c:25:
src/statement.h:37: Fehler: syntax error before »sqlite3«
src/statement.h:37: Warnung: kein Semikolon am Ende von »struct« oder »union«
src/statement.h:38: Warnung: »int« ist Standardtyp in Deklaration von »st«
src/statement.h:38: Warnung: Datendefinition hat keinen Typ oder Speicherklasse
src/statement.h:42: Fehler: syntax error before »}« token
src/statement.h:42: Warnung: »int« ist Standardtyp in Deklaration von »Statement«
src/statement.h:42: Warnung: Datendefinition hat keinen Typ oder Speicherklasse
src/statement.h:46: Fehler: syntax error before »*« token
src/statement.h:46: Warnung: Funktionsdeklaration ist kein Prototyp
src/statement.h:47: Fehler: syntax error before »*« token
src/statement.h:47: Warnung: Funktionsdeklaration ist kein Prototyp
src/statement.h:49: Fehler: syntax error before »*« token
src/statement.h:49: Warnung: Funktionsdeklaration ist kein Prototyp
src/statement.h:50: Fehler: syntax error before »*« token
src/statement.h:50: Warnung: Funktionsdeklaration ist kein Prototyp
src/statement.h:52: Fehler: syntax error before »*« token
src/statement.h:52: Warnung: Funktionsdeklaration ist kein Prototyp
src/statement.h:53: Fehler: syntax error before »*« token
src/statement.h:53: Warnung: Funktionsdeklaration ist kein Prototyp
src/statement.h:54: Fehler: syntax error before »*« token
src/statement.h:54: Warnung: Funktionsdeklaration ist kein Prototyp
src/statement.h:55: Fehler: syntax error before »*« token
src/statement.h:55: Warnung: Funktionsdeklaration ist kein Prototyp
In file included from src/module.c:26:
src/cursor.h:35: Fehler: syntax error before »Connection«
src/cursor.h:35: Warnung: kein Semikolon am Ende von »struct« oder »union«
src/cursor.h:42: Fehler: syntax error before »*« token
src/cursor.h:42: Warnung: »int« ist Standardtyp in Deklaration von »statement«
src/cursor.h:42: Warnung: Datendefinition hat keinen Typ oder Speicherklasse
src/cursor.h:46: Fehler: syntax error before »}« token
src/cursor.h:46: Warnung: »int« ist Standardtyp in Deklaration von »Cursor«
src/cursor.h:46: Warnung: Datendefinition hat keinen Typ oder Speicherklasse
src/cursor.h:56: Fehler: syntax error before »*« token
src/cursor.h:56: Warnung: Funktionsdeklaration ist kein Prototyp
src/cursor.h:57: Fehler: syntax error before »*« token
src/cursor.h:57: Warnung: Funktionsdeklaration ist kein Prototyp
src/cursor.h:58: Fehler: syntax error before »*« token
src/cursor.h:58: Warnung: Funktionsdeklaration ist kein Prototyp
src/cursor.h:59: Fehler: syntax error before »*« token
src/cursor.h:59: Warnung: Funktionsdeklaration ist kein Prototyp
src/cursor.h:60: Fehler: syntax error before »*« token
src/cursor.h:60: Warnung: Funktionsdeklaration ist kein Prototyp
src/cursor.h:61: Fehler: syntax error before »*« token
src/cursor.h:61: Warnung: Funktionsdeklaration ist kein Prototyp
src/cursor.h:62: Fehler: syntax error before »*« token
src/cursor.h:62: Warnung: Funktionsdeklaration ist kein Prototyp
src/cursor.h:63: Fehler: syntax error before »*« token
src/cursor.h:63: Warnung: Funktionsdeklaration ist kein Prototyp
src/cursor.h:64: Fehler: syntax error before »*« token
src/cursor.h:64: Warnung: Funktionsdeklaration ist kein Prototyp
src/cursor.h:65: Fehler: syntax error before »*« token
src/cursor.h:65: Warnung: Funktionsdeklaration ist kein Prototyp
src/cursor.h:66: Fehler: syntax error before »*« token
src/cursor.h:66: Warnung: Funktionsdeklaration ist kein Prototyp
In file included from src/module.c:29:
src/microprotocols.h:55: Fehler: syntax error before »*« token
src/microprotocols.h:55: Warnung: Funktionsdeklaration ist kein Prototyp
src/module.c: In Funktion »module_complete«:
src/module.c:91: Warnung: implizite Deklaration der Funktion »sqlite3_complete«
src/module.c: Auf höchster Ebene:
src/module.c:221: Fehler: »SQLITE_OK« ist hier nicht deklariert (nicht in einer Funktion)
src/module.c:222: Fehler: »SQLITE_DENY« ist hier nicht deklariert (nicht in einer Funktion)
src/module.c:223: Fehler: »SQLITE_IGNORE« ist hier nicht deklariert (nicht in einer Funktion)
src/module.c:224: Fehler: »SQLITE_CREATE_INDEX« ist hier nicht deklariert (nicht in einer Fun
ktion)
src/module.c:225: Fehler: »SQLITE_CREATE_TABLE« ist hier nicht deklariert (nicht in einer Fun
ktion)
src/module.c:226: Fehler: »SQLITE_CREATE_TEMP_INDEX« ist hier nicht deklariert (nicht in eine
r Funktion)
src/module.c:227: Fehler: »SQLITE_CREATE_TEMP_TABLE« ist hier nicht deklariert (nicht in eine
r Funktion)
src/module.c:228: Fehler: »SQLITE_CREATE_TEMP_TRIGGER« ist hier nicht deklariert (nicht in ei
ner Funktion)
src/module.c:229: Fehler: »SQLITE_CREATE_TEMP_VIEW« ist hier nicht deklariert (nicht in einer
 Funktion)
src/module.c:230: Fehler: »SQLITE_CREATE_TRIGGER« ist hier nicht deklariert (nicht in einer F
unktion)
src/module.c:231: Fehler: »SQLITE_CREATE_VIEW« ist hier nicht deklariert (nicht in einer Funk
tion)
src/module.c:232: Fehler: »SQLITE_DELETE« ist hier nicht deklariert (nicht in einer Funktion)
src/module.c:233: Fehler: »SQLITE_DROP_INDEX« ist hier nicht deklariert (nicht in einer Funkt
ion)
src/module.c:234: Fehler: »SQLITE_DROP_TABLE« ist hier nicht deklariert (nicht in einer Funkt
ion)
src/module.c:235: Fehler: »SQLITE_DROP_TEMP_INDEX« ist hier nicht deklariert (nicht in einer                        Funktion)
src/module.c:236: Fehler: »SQLITE_DROP_TEMP_TABLE« ist hier nicht deklariert (nicht in einer                        Funktion)
src/module.c:237: Fehler: »SQLITE_DROP_TEMP_TRIGGER« ist hier nicht deklariert (nicht in eine                       r Funktion)
src/module.c:238: Fehler: »SQLITE_DROP_TEMP_VIEW« ist hier nicht deklariert (nicht in einer F                       unktion)
src/module.c:239: Fehler: »SQLITE_DROP_TRIGGER« ist hier nicht deklariert (nicht in einer Fun                       ktion)
src/module.c:240: Fehler: »SQLITE_DROP_VIEW« ist hier nicht deklariert (nicht in einer Funkti                       on)
src/module.c:241: Fehler: »SQLITE_INSERT« ist hier nicht deklariert (nicht in einer Funktion)
src/module.c:242: Fehler: »SQLITE_PRAGMA« ist hier nicht deklariert (nicht in einer Funktion)
src/module.c:243: Fehler: »SQLITE_READ« ist hier nicht deklariert (nicht in einer Funktion)
src/module.c:244: Fehler: »SQLITE_SELECT« ist hier nicht deklariert (nicht in einer Funktion)
src/module.c:245: Fehler: »SQLITE_TRANSACTION« ist hier nicht deklariert (nicht in einer Funk                       tion)
src/module.c:246: Fehler: »SQLITE_UPDATE« ist hier nicht deklariert (nicht in einer Funktion)
src/module.c:247: Fehler: »SQLITE_ATTACH« ist hier nicht deklariert (nicht in einer Funktion)
src/module.c:248: Fehler: »SQLITE_DETACH« ist hier nicht deklariert (nicht in einer Funktion)
src/module.c: In Funktion »init_sqlite«:
src/module.c:375: Warnung: implizite Deklaration der Funktion »sqlite3_libversion«
src/module.c:375: Warnung: Übergabe des Arguments 1 von »PyString_FromString« erzeugt Zeiger                        von Ganzzahl ohne Typkonvertierung
error: command 'gcc' failed with exit status 1
Version:

Code: Alles auswählen

$ python -V
Python 2.4.2
Ich hoff, das ich jetz nich verdammt werd oder so :oops:
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

CrackPod hat geschrieben:Dann hab ich mir die source Datein runtergeladen und wollts installieren:
Hi CrackPod!

Welche(s) Betriebssystem/Distribution?

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Na Linux sicherdoch ;)
Kubuntu 5.10 Breezy Badger; i686 Archi; 2.6.12-10-686 Kernel
Reicht das?
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

gerold hat geschrieben:Welche(s) Betriebssystem/Distribution?
Bei Debian Sarge:

1.) ``aptitude install sqlite3 libsqlite3-dev``
2.) ``python setup.py install``

lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

gerold hat geschrieben:1.) ``aptitude install sqlite3 libsqlite3-dev``
2.) ``python setup.py install``
Warum so umständlich?

Code: Alles auswählen

aptitude install python-pysqlite2
(geht auch unter Ubuntu Dapper)
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Joghurt hat geschrieben:Warum so umständlich?

Code: Alles auswählen

aptitude install python-pysqlite2
Hi Joghurt!

Das hätte ich auch gerne getan, aber auf meinem Debian "Sarge" Server findet er das Paket "python-pysqlite2" nicht. Deshalb dachte ich, dass es erst im Debian "Testing" drinnen ist.


etc/apt/sources.list:

Code: Alles auswählen

deb http://debian.inode.at/debian sarge main contrib non-free
deb http://debian.inode.at/debian-non-US sarge non-US/main non-US/contrib non-US/non-free
deb http://security.debian.org/ sarge/updates main contrib non-free
lg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Hab den Fehler immer noch:

Code: Alles auswählen

$ sudo apt-get install python-pysqlite2
Paketlisten werden gelesen... Fertig
Abhängigkeitsbaum wird aufgebaut... Fertig
Die folgenden zusätzlichen Pakete werden installiert:
  python2.4-pysqlite2
Die folgenden NEUEN Pakete werden installiert:
  python-pysqlite2 python2.4-pysqlite2
0 aktualisiert, 2 neu installiert, 0 zu entfernen und 13 nicht aktualisiert.
Es müssen 52,1kB Archive geholt werden.
Nach dem Auspacken werden 406kB Plattenplatz zusätzlich benutzt.
Möchten Sie fortfahren [J/n]? j
Hole:1 http://ftp.inf.tu-dresden.de breezy/main python2.4-pysqlite2 2.0.3-1 [49,6kB]
Hole:2 http://ftp.inf.tu-dresden.de breezy/main python-pysqlite2 2.0.3-1 [2486B]
Es wurden 52,1kB in 10s geholt (4906B/s)

Preconfiguring packages ...
Wähle vormals abgewähltes Paket python2.4-pysqlite2.
(Lese Datenbank ... 138573 Dateien und Verzeichnisse sind derzeit installiert.)
Entpacke python2.4-pysqlite2 (aus .../python2.4-pysqlite2_2.0.3-1_i386.deb) ...
Wähle vormals abgewähltes Paket python-pysqlite2.
Entpacke python-pysqlite2 (aus .../python-pysqlite2_2.0.3-1_all.deb) ...
Richte python2.4-pysqlite2 ein (2.0.3-1) ...

Richte python-pysqlite2 ein (2.0.3-1) ...
gottesworkstation@gottesworkstation:~/Desktop/pysqlite-2.3.2/pysqlite-2.3.2$ python
Python 2.4.2 (#2, Sep 30 2005, 21:19:01)
[GCC 4.0.2 20050808 (prerelease) (Ubuntu 4.0.1-4ubuntu8)] on linux2
Type "help", "copyright", "credits" or "license" for more information.
>>> from pysqlite2 import dbapi2 as sqlite
Traceback (most recent call last):
  File "<stdin>", line 1, in ?
  File "pysqlite2/dbapi2.py", line 27, in ?
    from pysqlite2._sqlite import *
ImportError: No module named _sqlite
#
Is der Code falsch?(Is von http://initd.org/tracker/pysqlite/wiki/PysqliteVersions )
Oder hat die Installation nich geklappt? Aber dann hätt ich doch ne Fehlermeldung bekommen?!

Greetz
Zuletzt geändert von CrackPod am Dienstag 11. Juli 2006, 21:12, insgesamt 1-mal geändert.
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Stimmt. Da gibt es nur python-sqlite
Joghurt
User
Beiträge: 877
Registriert: Dienstag 15. Februar 2005, 15:07

Ruf Python mal nicht aus deinem pysqlite-Verzeichnis heraus aus. Sonst importierst du das unvollständige lokale Paket.
CrackPod
User
Beiträge: 205
Registriert: Freitag 30. Juni 2006, 12:56

Ah, jetz gehts :)
Danke
Antworten