mySQL Tabellen "Überhang" ermitteln...

Alles, was nicht direkt mit Python-Problemen zu tun hat. Dies ist auch der perfekte Platz für Jobangebote.
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

mySQL Tabellen "Überhang" ermitteln...

Beitragvon jens » Samstag 9. Juli 2005, 14:08

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?
Zuletzt geändert von jens am Montag 11. Juli 2005, 09:59, insgesamt 1-mal geändert.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Samstag 9. Juli 2005, 15:10

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...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Gast

Beitragvon Gast » Samstag 9. Juli 2005, 17:12

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
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Montag 11. Juli 2005, 06:36

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 :(

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Montag 11. Juli 2005, 07:12

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...

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Montag 11. Juli 2005, 16:20

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

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
Benutzeravatar
jens
Moderator
Beiträge: 8458
Registriert: Dienstag 10. August 2004, 09:40
Wohnort: duisburg
Kontaktdaten:

Beitragvon jens » Donnerstag 14. Juli 2005, 11:52

Ha :lol: :D :o

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.

CMS in Python: http://www.pylucid.org
GitHub | Open HUB | Xing | Linked in
Bitcoins to: 1JEgSQepxGjdprNedC9tXQWLpS424AL8cd
XT@ngel
User
Beiträge: 256
Registriert: Dienstag 6. August 2002, 14:36
Kontaktdaten:

Beitragvon XT@ngel » Donnerstag 14. Juli 2005, 15:20

Hallo jens,
der Gast da oben war ich :D

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 :roll:

mfG
Andreas

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder