AttributeError bei Ergebnisanzeige einer External Method

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

AttributeError bei Ergebnisanzeige einer External Method

Beitragvon keboo » 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: 5554
Registriert: Samstag 28. Februar 2004, 22:04
Wohnort: Telfs (Tirol)
Kontaktdaten:

Re: AttributeError bei Ergebnisanzeige einer External Method

Beitragvon gerold » 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

Funktioniert leider immer noch nicht

Beitragvon keboo » 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

Zusatz

Beitragvon keboo » 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=]
<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'})
[/code]

Wie kann ich nur die Ergebnisliste als Variable (tal:define ... ) ansprechen, damit ich das Ergbnis weiter verabeiten kann?

Danke,
Johannes

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder