class Model(Utils): __metaclass__ = ModelMetaclass def __init__(self, rid=0, **kwargs): if not getattr(self.__class__,'table_name'): self.table_name = self.__class__.__name__.lower() if getattr(self.__class__,'db_config'): self.db_config = getattr(self.__class__,'db_config') else: raise NotFindArgv('not find db_config argv') for name in self.field_names: field = getattr(self.__class__, name.replace("`", "")) setattr(self, name.replace("`", ""), field.default) for key, value in kwargs.items(): setattr(self, key.replace("`", ""), value) if getattr(self.__class__,'debug'): self.debug() self.build_conn() def build_conn(self): self.sqlstore = SqlStore(**self.db_config) self.cursor = self.sqlstore.get_cursor() def debug(self): for name in dir(self.__class__): print name,'-------',getattr(self.__class__,name) @property def field_names(self): names = [] for name in dir(self.__class__): var = getattr(self.__class__, name.replace("`", "")) if isinstance(var, Field): names.append("`%s`"%name) return names @property def field_values(self): values = [] for name in self.field_names: value = getattr(self, name.replace("`", "")) if isinstance(value, Model): value = value.id if isinstance(value, str): value = value.replace("'", "''") try: value = value.decode("gbk") except Exception, e: pass try: value = value.decode("utf8") except Exception, e: pass values.append("'%s'" % value)
def build_conn(self): self.sqlstore = SqlStore(**self.db_config) self.cursor = self.sqlstore.get_cursor()