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
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.)
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
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:
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:
$ 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
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.
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
$ 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