SQLObj. in eigener Klasse / Methoden per Schleife erzeugen
Verfasst: Montag 24. März 2008, 21:15
Hallo zusammen!
Für meine Webanwendung verwende ich SQLObjekt. Da es mich genervt hat, jeden Wert vor der Übergabe mit SQLObjekt zur Datenbank zu überprüfen, wollte ich nun das SQLObjekt in meiner eigenen Klasse kapseln und für jedes Datenbankfeld einen Setter und Getter mit property erzeugen.
Etwa so habe ich mir das gedacht
Soweit die Idee. Jetzt hab ich allerdings ca. 8 Tabellen mit zwischen 10-30 Spalten, die ich alle als Getter und Setter in meiner Klasse erstellen müsste. DIe meisten Felder sollen durch meine Klasse jedoch gesperrt werden
Um mir einiges an Arbeit zu ersparen und vor allem die Klasse dynamisch aktuell zu halten, wenn ich mal meine tables.py ändere, möchte ich diese Methoden in einer Schleife erzeugen und der Klasse anhängen. Die Schleife sollte dabei z.B. die Attribute des SQLObjekt durchlaufen. für die Attribute, bei dennen ich Änderungen zulassen möchte, würde ich die Methode dann einfach überschreiben.
Jemand eine Idee wie ich das realisieren könnte mit der Schleife, oder hat jemand vielleicht sogar eine bessere Idee dafür?
Danke für jede Hilfe!
Für meine Webanwendung verwende ich SQLObjekt. Da es mich genervt hat, jeden Wert vor der Übergabe mit SQLObjekt zur Datenbank zu überprüfen, wollte ich nun das SQLObjekt in meiner eigenen Klasse kapseln und für jedes Datenbankfeld einen Setter und Getter mit property erzeugen.
Etwa so habe ich mir das gedacht
Code: Alles auswählen
from mytables import User
class User():
def __init__(self):
self._obj = None
self._table = User
def get(self,value=None):
if value is None:
raise AttributeError("No values for userobject have been supplied")
try:
if isinstance(value,int):
self._obj = self._table.get(value)
if isinstance(value,basestring):
self._obj = self._table.selectBy(name=value)[0]
except SQLObjectNotFound:
raise ObjectNotFound("%s could not be found" % self._name)
except IndexError:
raise ObjectNotFound("%s could not be found" % self._name)
if self._obj is None:
raise ObjectNotFound("%s could not be found" % self._name)
def Gname(self):
return self._obj.name
def Sname(self,value=None):
#
#hier ein paar Überprüfungen des Wertes
#
self._obj.name = value
name = property(Gname,Sname)
#beispiel
User.get(1) #hole den Benutzer mit der ID 1
User.name = "admin" # Änder seinen Namen auf "admin"
Code: Alles auswählen
def Gblub(self):
return self._obj.blub
def Sblub(self,*args,**keywd):
raise DoNotChange("Wert darf nicht verändert werden")
blub = property(Gblub,Sblub)
Jemand eine Idee wie ich das realisieren könnte mit der Schleife, oder hat jemand vielleicht sogar eine bessere Idee dafür?
Danke für jede Hilfe!