mysql datenbankname auslesen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
bj
User
Beiträge: 7
Registriert: Donnerstag 22. Juni 2006, 14:12

hallo,

habe folgendes problem...

ich hab eine db in mysql
dann hab ich den python code...

Code: Alles auswählen

def GetTables(self):
    """ returns a list with the table names """
    tables = self.connection.execute('SHOW TABLES');
    tableArray = []
    for row in tables:
        tableArray.append(row.Tables_in_fbuch)
    return tableArray
so läuft der schön durch "Tables_in_fbuch"...

ich will des allerdings dynamisch haben..
wenn ich also mal ein anderes dbmodell hab, welches z.b. adrbuch heißt, wird ja dann bei dem befehl "show tables" des ausgegeben "Tables_in_adrbuch"
Wie bekomm ich des in eine variable rein, dass ich die dann in die for-schleife einbaun kann?


gruß
bj
BlackJack

Ungetestet:

Code: Alles auswählen

from operator import attrgetter

def get_tables(self, db_name):
    return map(attrgetter('Tables_in_' + db_name),
               self.connection.execute('SHOW TABLES'))
Deine Namen sind übrigens nicht PEP 8-konform und das Semikolon ist überflüssig.
bj
User
Beiträge: 7
Registriert: Donnerstag 22. Juni 2006, 14:12

hi

danke für die schnelle antwort!!

was machst du mit dem hier? du benutzt ja nirgens row...

Code: Alles auswählen

return map(attrgetter('Tables_in_' + db_name),self.connection.execute('SHOW TABLES'))
gruß
bj
BlackJack

bj hat geschrieben:was machst du mit dem hier? du benutzt ja nirgens row...

Code: Alles auswählen

return map(attrgetter('Tables_in_' + db_name),self.connection.execute('SHOW TABLES'))
Das Ergebnis von dem `execute()` ist etwas über das man iterieren kann. Das machst Du mit einer ``for``-Schleife und nennst das "aktuelle" Objekt `row`. Diese Schleife ist in der `map()`-Funktion "versteckt". `map()` nimmt eine Funktion und ein Objekt über das man iterieren kann, wendet die Funktion auf jedes Objekt an und steckt das Ergebnis in eine Liste, die dann zurückgegeben wird.

Wenn man `map()` selber schreiben wollte, sähe das ungefähr so aus:

Code: Alles auswählen

def my_map(func, iterable):
    result = list()
    for item in iterable:
        result.append(func(item))
    return result
bj
User
Beiträge: 7
Registriert: Donnerstag 22. Juni 2006, 14:12

hi


vielen dank!


gruß
bj
Antworten