AttributeError bei Ergebnisanzeige einer External Method

Django, Flask, Bottle, WSGI, CGI…
Antworten
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

Mittwoch 17. Januar 2007, 18:25

Hallo Leute,

Bitte um eure Hilfe!

Ich habe folgende externe Methode geschrieben um eine MySQL Select Abfrage in ein Dictionnary zu bekommen, welches übergeben werden soll:

Code: Alles auswählen

def mysql2dict(table):

    import MySQLdb
    
    # connect
    db = MySQLdb.connect(host="localhost", user="root", passwd="secret", db="testdb")
    
    # create a cursor
    
    cursor = MySQLdb.cursors.DictCursor(db)
    # execute SQL statement
    cursor.execute("SELECT * FROM "+table)
    
    # get the resultset as a tuple
    result = cursor.fetchall()
    
    return result
Die Funktion soll den Namen der Tabelle aus eine Page Template in welchem es aufgerufen wird übergeben bekommen:

Code: Alles auswählen

<p tal:content="context/test_external?table=person"></p>
Hier kommt es leider zu einem AttributeError. Es funktioniert, wenn ich tabe statisch in meiner Methode setze. So leider nicht.

Ich will nur einmal in meinem Page Template den Rückgabewert angezigt bekommen.

Was hab ich nicht begriffen bei der Übergabe von Parametern an eine Externe Methode?

Danke für eure Hilfe,

Johannes
Benutzeravatar
gerold
Python-Forum Veteran
Beiträge: 5555
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Oberhofen im Inntal (Tirol)
Kontaktdaten:

Mittwoch 17. Januar 2007, 18:48

keboo hat geschrieben:Ich will nur einmal in meinem Page Template den Rückgabewert angezigt bekommen.
Hi Johannes!

Zum Testen von "Externen Methoden", gebe ich gerne einfach einen Text zurück.

Code: Alles auswählen

#!/usr/bin/env python
# -*- coding: iso-8859-1 -*-

import MySQLdb


def mysql2dict(self, tablename):
   
    # connect
    db = MySQLdb.connect(host="localhost", user="root", passwd="secret", db="testdb")
   
    # create a cursor
    cursor = MySQLdb.cursors.DictCursor(db)
    
    # execute SQL statement
    cursor.execute("SELECT * FROM " + tablename)
   
    # get the resultset as a tuple
    result = cursor.fetchall()
    
    ##################
    # Zum Testen, würde ich einfach mal einen String zurück liefern lassen
    ##################
    result = repr(self) + " " + repr(tablename) + " " + repr(result)
    
    return result
mfg
Gerold
:-)
http://halvar.at | Kleiner Bascom AVR Kurs
Wissen hat eine wunderbare Eigenschaft: Es verdoppelt sich, wenn man es teilt.
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

Donnerstag 18. Januar 2007, 10:26

Hallo Gerold,

Ich bekomme leider immer noch die selber Fehlermeldung mit dem AttributeError. Keine Ahnung an was das liegen kann.

Code: Alles auswählen

<p tal:content="context/test_external?tablename=person"></p>
Kann es sein, dass das Problem im tal:content Aufruf liegt?

Muss ich beim Ändern einer Externen Methode immer den Zope Server restarten?

Danke,

Johannes
keboo
User
Beiträge: 132
Registriert: Sonntag 19. Februar 2006, 14:03

Donnerstag 18. Januar 2007, 10:32

Wenn ich die externe Methode direkt per URL anspreche und darin den Tabellennamen angebe sehe ich als Ergbnis:

Code: Alles auswählen

<Folder at /Plone/testings> 'person' ({'person_id': 1L, 'vorname': 'Kai', 'name': 'Huber'}, {'person_id': 2L, 'vorname': 'Johannes', 'name': 'Berger'}, {'person_id': 3L, 'vorname': 'Maier', 'name': 'Peter'})
Wie kann ich nur die Ergebnisliste als Variable (tal:define ... ) ansprechen, damit ich das Ergbnis weiter verabeiten kann?

Danke,
Johannes
Antworten