Seite 2 von 2
Verfasst: Freitag 7. Juli 2006, 21:50
von BlackJack
Ist die denn von Dir oder aus einem Paket?
Verfasst: Samstag 8. Juli 2006, 00:02
von murph
@ blackjack:
Nachdem ich dann python-pysqlite2 wieder installiert habe, war sie wieder, da, sollte also die richtige Version sein.
das sollte deine frage beantworten...
Verfasst: Samstag 8. Juli 2006, 08:41
von BlackJack
Nein das beantwortet meine Frage nicht. Ich fragte nach der `/usr/lib/libsqlite3.so.0` und nicht der `_sqlite.so`.
Verfasst: Samstag 8. Juli 2006, 09:34
von _Sebastian_
Die ist von libsqlite3-0
Ich habe jetzt nochmals ALLES, was mit sqlite zusammenhängt, vollständig entfernt und installiere jetzt gerade python nochmal.
Alles, was ich dann im Anschluss machen muss, ist python-pysqlite2 zu installieren, richtig? Er installiert dann noch die Pakete libsqlite3-0 und python2.4-pysqlite mit, und dann sollte doch eigentlich alles funktionieren. Aber der Fehler bleibt?!
Verfasst: Samstag 8. Juli 2006, 11:46
von _Sebastian_
Habs geschafft

Wo genau der Fehler war, weiß ich nicht, aber nachdem ich alles, was *sqlite* im Namen hatte, mit dem Paketmanager entfernt habe und die neuesten Versionen aus den sources neukompiliert habe (vorher in setup.cfg die dirs anpassen; /usr/local/include und /usr/local/lib), hats funktioniert, NACHDEM ich folgendes ausprobiert habe:
export LD_LIBRARY_PATH=/usr/local/lib
Danke für die Hilfe
Verfasst: Montag 24. Juli 2006, 22:14
von Dragonito
Hi Leute,
habe versucht dieses SQLitebeispiel durchzukauen. Bei mir gestalltet sich folgendes Problem hier erstmal mein Code (Zum Teil auskommentiert wegen DB Anlage und Inserts):
Code: Alles auswählen
from pysqlite2 import dbapi2 as sqlite
con = sqlite.connect("testdb")
cur = con.cursor()
who = "Melanie"
#cur.execute("CREATE TABLE people ( name TEXT, age INT )")
#cur.execute("INSERT INTO people VALUES ('Melanie', 33)")
#cur.execute("INSERT INTO people VALUES ('Robin', 27)")
cur.execute("select age from people where name='" + who + "'")
print cur.fetchone()
Also erst hab ich die DB angelegt und die Inserts gefahren, danach wollte ich die Daten abrufen. Das wenn ich alles in einem Rutsch durchführe bekomme ich die gewollte 33 wenn ich aber später nur den Select durchführe findet der nix. Es kommt mir so vor als ob die DB beim Aufruf des Scriptes gelöscht wird.
Hab das hier nur mal so zum SQLitetesten ausprobiert, also nur rein aus interesse, jetzt möchte ich natürlich, das es auch funktioniert *g*... Ne andere Variante hab ich mit dem SQLAlchemy gebaut die klappte soweit.
Lieben Gruss
Robin
Kleiner Nachtrag ich verwende die Pakete die direkt von Ubuntu mitgeliefert werden

Verfasst: Montag 24. Juli 2006, 22:29
von DatenMetzgerX
Ändere den Verbindungsaufbau auf etwa dies
Code: Alles auswählen
self.conn = sqlite3.connect(db, isolation_level = None)
also füge isolation_level = None hinzu
Verfasst: Montag 24. Juli 2006, 22:29
von BlackJack
Das liegt daran, dass Du nirgends `commit()` aufrufst, also die Daten wirklich dauerhaft in die DB übernimmst. Wenn alles in einem Rutsch durchgeführt wird, dann passiert alles innerhalb einer Transaktion. Das "funktioniert", nur das die Änderungen ohne `commit()` beim Skriptende wieder rückgängig gemacht werden.
Verfasst: Montag 24. Juli 2006, 22:36
von Dragonito
ahh super con.commit() funktioniert prächtig, wieder was dazu gelernt. Orientiert sich anscheinend an der
"Python Database API Specification v2.0" oder gibts da größere Unterschiede?
Verfasst: Montag 24. Juli 2006, 22:48
von BlackJack
Daran orientieren sich eigentlich alle vernünftigen Datenbankmodule.