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 <[email protected]> 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',...]