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!