def update(self, record): keynames = [] updates = [] values = [] for keyname in self.columns: if keyname in self.pk: continue keyval = record.get(keyname, None) updates.append("%s = ?" % (keyname, )) values.append(keyval) updatecols = ', '.join(updates) for keyname in self.pk: keyval = record.get(keyname, None) if keyval is None: continue keynames.append("%s = ?" % (keyname, )) values.append(keyval) if len(keynames) != len(self.pk): raise JBoxDBItemNotFound() criteria = ' where ' + ' and '.join(keynames) stmt = "update %s set %s%s" % (self.name, updatecols, criteria) c = JBoxSQLite3.conn().cursor() # self.log_debug("SQL: %s", stmt) c.execute(stmt, tuple(values)) c.close() self.commit()
def update(self, record): keynames = [] updates = [] values = [] names = [] for keyname in self.columns: if keyname in self.pk: continue keyval = record.get(keyname, None) updates.append("`%s` = %%(%s)s" % (keyname, keyname)) values.append(keyval) names.append(keyname) updatecols = ', '.join(updates) for keyname in self.pk: keyval = record.get(keyname, None) if keyval is None: continue keynames.append("`%s` = %%(%s)s" % (keyname, keyname)) values.append(keyval) names.append(keyname) if len(keynames) != len(self.pk): raise JBoxDBItemNotFound() criteria = ' where ' + ' and '.join(keynames) stmt = "update %s set %s%s" % (self.name, updatecols, criteria) # self.log_debug("SQL: %s", stmt) c = JBoxCloudSQL.execute(stmt, dict(zip(names, values))) c.close()
def select(self, **kwargs): c = self._select(False, **kwargs) row = c.fetchone() if row is None: raise JBoxDBItemNotFound() item = dict(zip(self.columns, row)) c.close() return item
def delete(self, record): names = [] values = [] for keyname in self.pk: keyval = record.get(keyname, None) if keyval is None: continue names.append("%s = ?" % (keyname, )) values.append(keyval) if len(names) != len(self.pk): raise JBoxDBItemNotFound() criteria = ' where ' + ' and '.join(names) stmt = "delete from %s%s" % (self.name, criteria) c = JBoxSQLite3.conn().cursor() # self.log_debug("SQL: %s", stmt) c.execute(stmt, tuple(values)) c.close() self.commit()
def delete(self, record): names = [] values = [] colnames = [] for keyname in self.pk: keyval = record.get(keyname, None) if keyval is None: continue names.append("`%s` = %%(%s)s" % (keyname, keyname)) values.append(keyval) colnames.append(keyname) if len(names) != len(self.pk): raise JBoxDBItemNotFound() criteria = ' where ' + ' and '.join(names) stmt = "delete from %s%s" % (self.name, criteria) # self.log_debug("SQL: %s", stmt) c = JBoxCloudSQL.execute(stmt, dict(zip(colnames, values))) c.close()
def record_fetch(table, **kwargs): try: return table.get_item(**kwargs) except ItemNotFound: raise JBoxDBItemNotFound()