def delete(self, obj): """ :type obj self.__entity_type() """ flds = self.__get_fields(obj) where_fields = {} for field in flds: if not (flds[field].nullable and obj.__dict__[field] is None): where_fields[field] = obj.__dict__[field] if field not in obj._db_values else obj._db_values[field] Database.delete(self.__entity_type.__name__, where_fields)
def insert(self, obj): """ :type obj object """ flds = self.__get_fields(obj) fields = [] values = [] for field in flds: if not flds[field].auto_increment: fields.append(field) values.append(obj.__dict__[field]) Database.insert(obj.__class__.__name__, fields, values)
def update(self, obj): """ :type obj self.__entity_type() """ update_fields = {} where_fields = {} flds = self.__get_fields(obj) for field in flds: if not (flds[field].nullable and obj.__dict__[field] is None): where_fields[field] = obj.__dict__[field] if field not in obj._db_values else obj._db_values[field] if not flds[field].auto_increment: update_fields[field] = obj.__dict__[field] Database.update(self.__entity_type.__name__, update_fields, where_fields)
def find(self, where_clause=None, **kwargs): """ :rtype list """ flds = self.__get_fields(self.__entity_type) if where_clause and isinstance(where_clause, WhereNode): r = Database.select(self.__entity_type.__name__, flds, where_clause=where_clause) else: r = Database.select(self.__entity_type.__name__, flds, where_fields=kwargs) result_entities = [] for ritem in r: # iterate thought rows entity = self.__entity_type() for i in range(0, len(flds)): if flds[i] in entity.__dir__(): entity.__setattr__(flds[i], ritem[i]) result_entities.append(entity) return result_entities
def findall(self): """ :rtype list """ flds = self.__get_fields(self.__entity_type) r = Database.select(self.__entity_type.__name__, flds) result_entities = [] for ritem in r: # iterate thought rows entity = self.__entity_type() for i in range(0, len(flds)): if flds[i] in entity.__dir__(): entity.__setattr__(flds[i], ritem[i]) result_entities.append(entity) return result_entities
def prepare_clean_database(cls): """ :rtype Database """ Database.close() Database.open(":memory:")
# This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # Copyright (c) 2015 Reishin <*****@*****.**> # crashtua <*****@*****.**> and Contributors from orm.Entities import Person, Notes from dao.Person import PersonDAO from cube.database import Database # uncomment to write database to disk Database.open("D:\\test.db") # normal test case pdao = PersonDAO() p = Person(name="My Person", description="human") p.name = "NewName" if Database.has_created(): for i in range(1, 10): p.name = "Person %s" % i pdao.insert(p) results = pdao.findall() for item in results: