I use this as a generic function table names are variables (I use a shortcut -so other modules can just do select(x,y) or update(x,y,z). I guess the same can be extended a little bit to make use/enable more variables...
def updateStorage(self,tbl,name,value,cmdName=None): db = self.db id = None rowID = None for mTbl in db.tables: if tbl in mTbl: if mTbl.startswith(tbl): rows = db(db[mTbl].name==name).select() for row in rows: if row.name == name and row.value > 0: id = row.id if id != None: rowID = db(db[tbl].name==name).update(name=name,value=value) else: rowID = db[tbl].insert(name=name,value=value) if cmdName is not None: db(db[tbl].id==rowID).update(cmdName=cmdName) db.commit() return rowID On Mar 22, 3:28 pm, LightOfMooN <vladsale...@yandex.ru> wrote: > I have table with too much cols. > So, is there a way to pass variable names and values in the insert() > or update() methods like this? > > options_house = > db(db.company_houses_options.company_id==company.id).select().first() > if request.vars.edit_options_house: > houses_options={} > for column_name in houses_columns: > if request.vars.get(column_name, None): > houses_options[column_name]=True > else: > houses_options[column_name]=False > options_house.update_record(houses_options) > > where houses_columns is a list of columns names like > ['street','house','block','buildyear',...]