Hi,ich bräuchte mal eure Hilfe,
Gleich im Voraus,ich hab noch nie mit Datenbanken programmiert.
Aber ich möchte mit einem Programm die Daten aus einer .db und einer .sqlite auslesen.
Das Problem ist,dass bei allen Tutorials die ich gefunden habe,aus einer Datenbank mit bekanntem Namen gelesen wurde,doch die Namen der Datenbanken in meinem Fall sind unbekannt.
Also möchte ich den Inhalt einer .db und einer .sqlite auslesen,entschlüsseln und den Inhalt in eine variable speichern.Wie mach ich das? (ich verwende das sqlite3 module,kann aber auch auf ein anderes umsteigen,sofern ich nichts extra installieren muss...)
Danke für Hilfe im Voraus
Aus unbekannter Datenbank lesen
- Sr4l
- User
- Beiträge: 1091
- Registriert: Donnerstag 28. Dezember 2006, 20:02
- Wohnort: Kassel
- Kontaktdaten:
Erstmal musst du wissen was es für Datenbank Dateien sind.
.sqlite lässt jetzt SQLite3 vermuten, vielleich ist es aber auch SQLite2.
.db könnte alles sein, aber vll ist auch das SQLite.
Allgemeiner Tipp
- schau in die Datei und dort was im Header steht.
- such dir ein GUI Programm für die Datei um sie dir mal grob anschauen zu können
Für SQlite ist eine halbwegs brauchbare GUI: http://sqlitebrowser.sourceforge.net
.sqlite lässt jetzt SQLite3 vermuten, vielleich ist es aber auch SQLite2.
.db könnte alles sein, aber vll ist auch das SQLite.
Allgemeiner Tipp
- schau in die Datei und dort was im Header steht.
- such dir ein GUI Programm für die Datei um sie dir mal grob anschauen zu können
Für SQlite ist eine halbwegs brauchbare GUI: http://sqlitebrowser.sourceforge.net
Unter Linux könntest du das `man file` Kommandozeilenwerkzeug nutzen, um den Datentyp herauszufinden.
the more they change the more they stay the same
Das ändert nichts daran, dass du die Datei auf ein Linux-System kopieren könntest um dann möglicherweise mit file den Typ der Datei herauszubekommen.graphicsH hat geschrieben:das programm ist in diesem Fall rein für Windows...
welchen namen weisst du nicht? den dateinamen? wie sollst du sie dann finden? oder aendert sich der name, aber sqlite ist immer die erweiterung?
Was für einen Namen? Meinst du die Namen der Tabellen? Sr4l hat doch bereits einen Link zu einem Tool gepostet mit dem du dir Struktur und Inhalte einer Sqlite-Datenbank ansehen kannst.graphicsH hat geschrieben:Wie kann ich sie nun auslesen,ohne den Namen uä zu wissen?
Wenn du bisher noch nie mit relationalen Datenbanken gearbeitet hast, dann ist der programmtechnische Zugriff keine Aufgabe die man mal so eben nebenbei macht. Die pythonspezifischen Grundlagen findest du in der Python-Dokumentation zu sqlite3. Wissen um SQL musst du dir natürlich auch noch aneignen.
@ /me
Ja ich meine den Namen der Tabelle,und ich weiß dass man ihn mit dem Tool lesen kann,aber das Programm soll selbstständig neue Tabellen öffnen können,ohne dass ich erst mit einem Tool den Namen der Tabelle checken muss können.
Und wir lernen SQL gerade ansatzweise in Informatik...
Ja ich meine den Namen der Tabelle,und ich weiß dass man ihn mit dem Tool lesen kann,aber das Programm soll selbstständig neue Tabellen öffnen können,ohne dass ich erst mit einem Tool den Namen der Tabelle checken muss können.
Und wir lernen SQL gerade ansatzweise in Informatik...
-
Um Daten aus einer Tabelle zu lesen ("Tabellen öffnen" ist definitiv der falsche Ausdruck) musst du den Namen der Tabelle kennen. Bei MySQL bekommst du die Tabellennamen mit "SHOW TABLES", bei Sqlite müsstest du mal in der Dokumentation schauen wie das geht.graphicsH hat geschrieben:Ja ich meine den Namen der Tabelle,und ich weiß dass man ihn mit dem Tool lesen kann,aber das Programm soll selbstständig neue Tabellen öffnen können,ohne dass ich erst mit einem Tool den Namen der Tabelle checken muss können.
Code: Alles auswählen
>>> import sqlite3
>>> con = sqlite3.connect(":memory:")
>>> con.execute("CREATE TABLE test (id INTEGER)")
<sqlite3.Cursor object at 0x02AD9420>
>>> con.execute("CREATE TABLE noch_eine_tabelle (id INTEGER)")
<sqlite3.Cursor object at 0x02AD92E0>
>>> con.execute('SELECT name FROM sqlite_master WHERE type = "table"').fetchall()
[(u'test',), (u'noch_eine_tabelle',)]
>>>
- Hyperion
- Moderator
- Beiträge: 7478
- Registriert: Freitag 4. August 2006, 14:56
- Wohnort: Hamburg
- Kontaktdaten:
Man mag mich phantasielos nennen, aber welchen Anwendungsfall mag es geben, bei dem das benötigt wird :K
Edit: Ok, wenn ich ein Verwaltungstool für DBs schreibe.... aber sonst?
Edit: Ok, wenn ich ein Verwaltungstool für DBs schreibe.... aber sonst?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
assert encoding_kapiert
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
btw. Mit Django hat man per "inspectdb" die Möglichkeit automatisiert Models anhand einer bestehenden Datenbank zu erstellen. Siehe: https://docs.djangoproject.com/en/1.4/h ... databases/
So kann man auch recht schnell mit den Daten über das ORM spielen.
Eigentlich könnte man sich ein kleines Projekt machen um eine einfaches phpMyAdmin nach zu bauen, mit dem Vorteil, das es nicht nur mit MySQL funktionieren würde
Neu ist die Idee allerdings nicht: http://www.python-forum.de/viewtopic.php?f=6&t=22168
So kann man auch recht schnell mit den Daten über das ORM spielen.
Eigentlich könnte man sich ein kleines Projekt machen um eine einfaches phpMyAdmin nach zu bauen, mit dem Vorteil, das es nicht nur mit MySQL funktionieren würde
Neu ist die Idee allerdings nicht: http://www.python-forum.de/viewtopic.php?f=6&t=22168