def update(self, statement): """ Modifies an entry in the database. Creates an entry if one does not exist. """ Statement = self.get_model('statement') Response = self.get_model('response') Tag = self.get_model('tag') if statement: session = self.Session() query = session.query(Statement).filter_by(text=statement.text) record = query.first() # Create a new statement entry if one does not already exist if not record: record = Statement(text=statement.text) record.extra_data = dict(statement.extra_data) for _tag in statement.tags: tag = session.query(Tag).filter_by(name=_tag).first() if not tag: # Create the record tag = Tag(name=_tag) record.tags.append(tag) # Get or create the response records as needed for response in statement.in_response_to: _response = session.query(Response).filter_by( text=response.text, statement_text=statement.text ).first() if _response: _response.occurrence += 1 else: # Create the record _response = Response( text=response.text, statement_text=statement.text, occurrence=response.occurrence ) record.in_response_to.append(_response) session.add(record) self._session_finish(session)
def update(self, statement): """ Modifies an entry in the database. Creates an entry if one does not exist. """ from chatterbot.ext.sqlalchemy_app.models import Statement, Response if statement: session = self.Session() query = self.__statement_filter(session, **{"text": statement.text}) record = query.first() # Create a new statement entry if one does not already exist if not record: record = Statement(text=statement.text) record.extra_data = dict(statement.extra_data) if statement.in_response_to: # Get or create the response records as needed for response in statement.in_response_to: _response = session.query(Response).filter_by( text=response.text, statement_text=statement.text).first() if _response: _response.occurrence += 1 else: # Create the record _response = Response(text=response.text, statement_text=statement.text, occurrence=response.occurrence) record.in_response_to.append(_response) session.add(record) self._session_finish(session)
def get_response_table(response): from chatterbot.ext.sqlalchemy_app.models import Response return Response(text=response.text, occurrence=response.occurrence)