Seite 1 von 1
mySQL Tabellen "Überhang" ermitteln...
Verfasst: Samstag 9. Juli 2005, 14:08
von jens
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?
Verfasst: Samstag 9. Juli 2005, 15:10
von jens
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...
Verfasst: Samstag 9. Juli 2005, 17:12
von Gast
hallo jens,
Wobei cursor.fetchall() Ergebnisse Tuple sind und leider keine Dicts...
Du kannst dir das Ergebnis auch als Dict zutückgeben lassen. siehe
http://www.python-forum.de/viewtopic.php?t=761
MfG
Andreas
Verfasst: Montag 11. Juli 2005, 06:36
von jens
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

Verfasst: Montag 11. Juli 2005, 07:12
von jens
So nun hab ich das was ich wollte:
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>"
Ich komm zwar nicht auf exact die gleichen Werte wie phpMyAdmin, aber was sollts...
Verfasst: Montag 11. Juli 2005, 16:20
von jens
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
Verfasst: Donnerstag 14. Juli 2005, 11:52
von jens
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
Verfasst: Donnerstag 14. Juli 2005, 15:20
von XT@ngel
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