Seite 1 von 1

table info

Verfasst: Freitag 17. Mai 2013, 02:11
von Tengel
Gibt es eine Möglichkeit sich die "table werte" anzeigen zu lassen?
Also quasi von einem table personen
name vorname id ....

Re: table info

Verfasst: Freitag 17. Mai 2013, 07:12
von /me
Tengel hat geschrieben:Gibt es eine Möglichkeit sich die "table werte" anzeigen zu lassen?
Ich nehme an du meinst die Spaltennamen. Von welchem Datenbankmanagementsystem reden wir denn?

Re: table info

Verfasst: Freitag 17. Mai 2013, 07:37
von BlackJack
Falls Spaltennamen gemeint sind und wir von einer SQL-Datenbank mit einem DB API 2.0 kompatiblen Modul reden, dann gibt es ein `description`-Attribut auf dem Cursor-Objekt: http://www.python.org/dev/peps/pep-0249/#description

Re: table info

Verfasst: Freitag 17. Mai 2013, 17:10
von Tengel
Sry - ganz verpennt anzugeben welche Datenbank...

Ja ich nutze sqlite3
Kannst du mir bitte ein Beispiel zu cursor.description() geben?

Re: table info

Verfasst: Freitag 17. Mai 2013, 17:28
von Sirius3
»description« ist keine Funktion sonder ein Attribut.

Code: Alles auswählen

…
for description in cursor.description:
    print description.name
…

Re: table info

Verfasst: Freitag 17. Mai 2013, 18:21
von Tengel

Code: Alles auswählen

import sqlite3

connection = sqlite3.connect("hallo.db")
cursor = connection.cursor()
cursor.execute("SELECT * FROM personen")

for description in cursor.description:
    print(description)

connection.close()

So läuft es gibt aber

Code: Alles auswählen

('name', None, None, None, None, None, None)
('vorname', None, None, None, None, None, None)
('personalnummer', None, None, None, None, None, None)
('gehalt', None, None, None, None, None, None)
aus.
In der Dokumentation steht das name und type_code vorgeschrieben sind, müsste das erste None da nicht den Typ angeben?

Auch wird bei
print(description.name) ein Fehler zurück gegeben das der Tupel kein Attribut name hat - liegt das an meiner Version?
Ah - ist unnötig da sich Tupel ja mit description[0] - abfragen lassen.

Re: table info

Verfasst: Freitag 17. Mai 2013, 20:11
von /me
Tengel hat geschrieben:In der Dokumentation steht das name und type_code vorgeschrieben sind, müsste das erste None da nicht den Typ angeben?
SQLite ist ein wenig lax bezüglich Typdefinitionen für Spalten. Das sind eher Empfehlungen als echte Festlegungen.

Aus http://www.sqlite.org/datatype3.html: "With static typing, the datatype of a value is determined by its container - the particular column in which the value is stored. SQLite uses a more general dynamic type system. In SQLite, the datatype of a value is associated with the value itself, not with its container.".

Für mich ist SQLite eigentlich keine echte SQL-Datenbank sondern nur ein besserer Zettelkasten. Allerdings ist es ein sehr einfach einsetzbarer und schneller Zettelkasten. :D

Re: table info

Verfasst: Samstag 18. Mai 2013, 04:15
von Tengel
Gibt es eine Möglichkeit abzufragen welche Tabellen in einer Datenbank vorhanden sind?

Re: table info

Verfasst: Samstag 18. Mai 2013, 09:32
von BlackJack
@Tengel: In der Regel ja, aber wie das genau geht ist von Datenbanksystem zu Datenbanksystem unterschiedlich. Einige haben spezielle nicht standardisierte SQL-Anweisungen dafür, andere legen die Informationen in Tabellen ab, deren Namen man wissen muss um nachschauen zu können welche Tabellen es gibt.