In phpMyAdmin sieht man in der Übersicht, wie groß jede Tabelle ist und wie groß der Überhang...
Weiß jemand wie man es mti SQL-Befehlen selber abrufen kann? Ich habe bisher nur SHOW TABLE STATUS gefunden.
Das Ergebniss von "SHOW TABLE STATUS" ist ja auch eine Tabelle.
Das problem ist, das die Tabelle nicht immer gleich aufgebaut ist, oder? Je nach SQL-Server-Version ist's mal anders...
Wie kann ich gezielt nur "Data_free" aus "SHOW TABLE STATUS" raus holen?
mySQL Tabellen "Überhang" ermitteln...
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Ich hab hier: http://www.planet-source-code.com/vb/sc ... 8&lngWId=8 ein PHP skript gefunden...
Für mich sieht das so aus, das aus den SHOW TABLE STATUS Ergebnissen gezielt Informationen mit einem Namen (im Beispiel "Create_time" und "Update_time") ermittelt werden...
Wo wir doch wieder On-Tropic sind: Gibts beim Python mySQLdb Modul eine Möglichkeit das nachzubilden???
Wobei cursor.fetchall() Ergebnisse Tuple sind und leider keine Dicts...
Für mich sieht das so aus, das aus den SHOW TABLE STATUS Ergebnissen gezielt Informationen mit einem Namen (im Beispiel "Create_time" und "Update_time") ermittelt werden...
Wo wir doch wieder On-Tropic sind: Gibts beim Python mySQLdb Modul eine Möglichkeit das nachzubilden???
Wobei cursor.fetchall() Ergebnisse Tuple sind und leider keine Dicts...
hallo jens,
MfG
Andreas
Du kannst dir das Ergebnis auch als Dict zutückgeben lassen. siehe http://www.python-forum.de/viewtopic.php?t=761Wobei cursor.fetchall() Ergebnisse Tuple sind und leider keine Dicts...
MfG
Andreas
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Danke für deinen Tip! Ich denke ich probier mal die Lösung von XT@ngel!
Ich frage mich nur, warum ich mir eine Aufwändige MySQLdb wrapper geschrieben hab und mich keiner darauf aufmerksam gemacht hat, das es viel einfacher geht
Ich frage mich nur, warum ich mir eine Aufwändige MySQLdb wrapper geschrieben hab und mich keiner darauf aufmerksam gemacht hat, das es viel einfacher geht

- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
So nun hab ich das was ich wollte:
Ich komm zwar nicht auf exact die gleichen Werte wie phpMyAdmin, aber was sollts...
Code: Alles auswählen
self.db.conn.query( "SHOW TABLE STATUS" )
results = self.db.conn.store_result().fetch_row(maxrows=0, how=1)
page += '<table id="internals_log_information" class="internals_table">'
# Tabellen überschriften generieren
page += "<tr>"
page += "<th>name</th>"
page += "<th>entries</th>" # Rows
page += "<th>update_time</th>"
page += "<th>size</th>"
page += "<th>overhang</th>" # data_free
page += "<th>collation</th>"
page += "</tr>"
total_rows = 0
total_size = 0
total_data_free = 0
# eigentlichen Tabellen Daten erzeugen
for line in results:
page += "<tr>"
page += "<td>%s</td>" % line["Name"]
page += '<td style="text-align: right;">%s</td>' % line["Rows"]
total_rows += line["Rows"]
page += "<td>%s</td>" % line["Update_time"]
if line["Data_length"] < line["Index_length"]:
size = line["Index_length"]
else:
size = line["Data_length"]
page += '<td style="text-align: right;">%sKB</td>' % Tools.formatter( size/1024.0, "%0.1f")
total_size += size
page += '<td style="text-align: right;">%sKB</td>' % Tools.formatter( line["Data_free"]/1024.0, "%0.1f" )
total_data_free += line["Data_free"]
page += "<td>%s</td>" % line["Collation"]
#~ page += "<td>%s</td>" % line["Comment"]
page += "</tr>"
page += '<tr style="font-weight:bold">'
page += "<td></td>"
page += '<td style="text-align: right;">%s</td>' % total_rows
page += "<td></td>"
page += '<td style="text-align: right;">%sKB</td>' % Tools.formatter( total_size/1024.0, "%0.1f")
page += '<td style="text-align: right;">%sKB</td>' % Tools.formatter( total_data_free/1024.0, "%0.1f" )
page += "<td></td>"
page += "</tr>"
page += "</table>"
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Ach verdammt!
Anscheinend hat bei MySQLdb v0.9.1 das connection-Objekt noch nicht die query()-Methode
Also muß ich doch wieder zurück zu meiner alten Variante...
Eine neuere Version von MySQLdb kann ich auch nicht so einfach "installieren" siehe: http://www.python-forum.de/viewtopic.php?t=3573
Anscheinend hat bei MySQLdb v0.9.1 das connection-Objekt noch nicht die query()-Methode

Also muß ich doch wieder zurück zu meiner alten Variante...
Eine neuere Version von MySQLdb kann ich auch nicht so einfach "installieren" siehe: http://www.python-forum.de/viewtopic.php?t=3573
- jens
- Python-Forum Veteran
- Beiträge: 8502
- Registriert: Dienstag 10. August 2004, 09:40
- Wohnort: duisburg
- Kontaktdaten:
Ha
Selbst mit der alten mySQLdb Version 0.9.1 kann man den cursor mit cursor = connection.cursor( MySQLdb.cursors.DictCursor ) erstellen!!!
Somit erhält man auch hier ein Dict statt ein Tuple zurück!
Drauf gestoßen bin ich wegen dem Listing: http://www.python-forum.de/viewtopic.php?p=15913#15913



Selbst mit der alten mySQLdb Version 0.9.1 kann man den cursor mit cursor = connection.cursor( MySQLdb.cursors.DictCursor ) erstellen!!!
Somit erhält man auch hier ein Dict statt ein Tuple zurück!
Drauf gestoßen bin ich wegen dem Listing: http://www.python-forum.de/viewtopic.php?p=15913#15913
Zuletzt geändert von jens am Donnerstag 28. Juli 2005, 14:19, insgesamt 1-mal geändert.
Hallo jens,
der Gast da oben war ich
Das wars was ich die eigentlich sagen wollte. Das selbe was in http://www.python-forum.de/viewtopic.php?p=15913#15913 steht findest Du auch in
http://www.python-forum.de/viewtopic.php?t=761
Hätte ich wohl besser erkären solln, sorry
mfG
Andreas
der Gast da oben war ich

Das wars was ich die eigentlich sagen wollte. Das selbe was in http://www.python-forum.de/viewtopic.php?p=15913#15913 steht findest Du auch in
http://www.python-forum.de/viewtopic.php?t=761
Hätte ich wohl besser erkären solln, sorry

mfG
Andreas