X-Git-Url: https://osm.etsi.org/gitweb/?a=blobdiff_plain;f=osm_ro%2Fdb_base.py;h=e6e1134d854f21383114c35aa19a93f9eda85931;hb=c19c5653c9ca00d27f4a9247973e5a811f14dfde;hp=58f5b8cfd0c635577a785612ed74e28a35a84606;hpb=dfed511cd627748046d90894f8600331413b1cd3;p=osm%2FRO.git diff --git a/osm_ro/db_base.py b/osm_ro/db_base.py index 58f5b8cf..e6e1134d 100644 --- a/osm_ro/db_base.py +++ b/osm_ro/db_base.py @@ -562,7 +562,7 @@ class db_base(): INSERT: dictionary with the key:value to insert table: table where to insert add_uuid: if True, it will create an uuid key entry at INSERT if not provided - created_time: time to add to the created_time column + created_time: time to add to the created_at column It checks presence of uuid and add one automatically otherwise Return: uuid ''' @@ -591,7 +591,7 @@ class db_base(): cmd= "INSERT INTO " + table +" SET " + \ ",".join(map(self.__tuple2db_format_set, INSERT.iteritems() )) if created_time: - cmd += ",created_at=%f" % created_time + cmd += ",created_at={time:.9f},modified_at={time:.9f}".format(time=created_time) if confidential_data: index = cmd.find("SET") subcmd = cmd[:index] + 'SET...' @@ -627,7 +627,7 @@ class db_base(): @retry @with_transaction - def update_rows(self, table, UPDATE, WHERE, modified_time=0, attempt=_ATTEMPT): + def update_rows(self, table, UPDATE, WHERE, modified_time=None, attempt=_ATTEMPT): """ Update one or several rows of a table. :param UPDATE: dictionary with the changes. dict keys are database columns that will be set with the dict values :param table: database table to update @@ -638,11 +638,12 @@ class db_base(): keys can be suffixed by >,<,<>,>=,<= so that this is used to compare key and value instead of "=" The special keys "OR", "AND" with a dict value is used to create a nested WHERE If a list, each item will be a dictionary that will be concatenated with OR - :param modified_time: Can contain the time to be set to the table row + :param modified_time: Can contain the time to be set to the table row. + None to set automatically, 0 to do not modify it :return: the number of updated rows, raises exception upon error """ - if table in self.tables_with_created_field and modified_time==0: - modified_time=time.time() + if table in self.tables_with_created_field and modified_time is None: + modified_time = time.time() return self._update_rows(table, UPDATE, WHERE, modified_time) @@ -752,12 +753,12 @@ class db_base(): return rows @retry - def get_table_by_uuid_name(self, table, uuid_name, error_item_text=None, allow_serveral=False, WHERE_OR={}, WHERE_AND_OR="OR", attempt=_ATTEMPT): + def get_table_by_uuid_name(self, table, uuid_name, error_item_text=None, allow_several=False, WHERE_OR={}, WHERE_AND_OR="OR", attempt=_ATTEMPT): ''' Obtain One row from a table based on name or uuid. Attribute: table: string of table name uuid_name: name or uuid. If not uuid format is found, it is considered a name - allow_severeral: if False return ERROR if more than one row are founded + allow_several: if False return ERROR if more than one row are found error_item_text: in case of error it identifies the 'item' name for a proper output text 'WHERE_OR': dict of key:values, translated to key=value OR ... (Optional) 'WHERE_AND_OR: str 'AND' or 'OR'(by default) mark the priority to 'WHERE AND (WHERE_OR)' or (WHERE) OR WHERE_OR' (Optional @@ -784,9 +785,9 @@ class db_base(): number = self.cur.rowcount if number == 0: raise db_base_Exception("No {} found with {} '{}'".format(error_item_text, what, uuid_name), http_code=httperrors.Not_Found) - elif number > 1 and not allow_serveral: + elif number > 1 and not allow_several: raise db_base_Exception("More than one {} found with {} '{}'".format(error_item_text, what, uuid_name), http_code=httperrors.Conflict) - if allow_serveral: + if allow_several: rows = self.cur.fetchall() else: rows = self.cur.fetchone()