Aus unbekannter Datenbank lesen

Installation und Anwendung von Datenbankschnittstellen wie SQLite, PostgreSQL, MariaDB/MySQL, der DB-API 2.0 und sonstigen Datenbanksystemen.
Antworten
Benutzeravatar
graphicsH
User
Beiträge: 84
Registriert: Donnerstag 8. September 2011, 10:21

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 :)
-
Benutzeravatar
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
Benutzeravatar
graphicsH
User
Beiträge: 84
Registriert: Donnerstag 8. September 2011, 10:21

ok,habs probiert:

die .db ist keine SQlite3 und lässt sich nicht öffnen,
die .sqlite lässt sich öffnen

Mit was könnte ich die .db öffnen,
Und wie kann ich nun in der .sqlite lesen,ohne was von ihr zu wissen...?
-
Dav1d
User
Beiträge: 1437
Registriert: Donnerstag 30. Juli 2009, 12:03
Kontaktdaten:

Unter Linux könntest du das `man file` Kommandozeilenwerkzeug nutzen, um den Datentyp herauszufinden.
the more they change the more they stay the same
Benutzeravatar
graphicsH
User
Beiträge: 84
Registriert: Donnerstag 8. September 2011, 10:21

das programm ist in diesem Fall rein für Windows...
-
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

graphicsH hat geschrieben:das programm ist in diesem Fall rein für Windows...
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.
Benutzeravatar
graphicsH
User
Beiträge: 84
Registriert: Donnerstag 8. September 2011, 10:21

ok,ich werd es später mit 'file' bei der .db probieren,

aber zur .sqlite:
Wie kann ich sie nun auslesen,ohne den Namen uä zu wissen?
-
deets

welchen namen weisst du nicht? den dateinamen? wie sollst du sie dann finden? oder aendert sich der name, aber sqlite ist immer die erweiterung?
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

graphicsH hat geschrieben:Wie kann ich sie nun auslesen,ohne den Namen uä zu wissen?
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.

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.
Benutzeravatar
graphicsH
User
Beiträge: 84
Registriert: Donnerstag 8. September 2011, 10:21

@ /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...
-
Benutzeravatar
/me
User
Beiträge: 3554
Registriert: Donnerstag 25. Juni 2009, 14:40
Wohnort: Bonn

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.
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.
Benutzeravatar
graphicsH
User
Beiträge: 84
Registriert: Donnerstag 8. September 2011, 10:21

ich werd mich jetzt die nächsten tage mal mehr mit sqlite und sql beschäftigen,d.h. werd erst in ein paar tagen wieder in diesem thread meine Fragen stellen,wenn etwas nicht geht (was sicher passiert...)
-
Benutzeravatar
sparrow
User
Beiträge: 4164
Registriert: Freitag 17. April 2009, 10:28

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',)]
>>>
Benutzeravatar
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?
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
Benutzeravatar
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 :P

GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Antworten