from sys import stderr from sqlalchemy.exc import SQLAlchemyError from movies import MovieDatabase, Movie from kivy.app import App class MoviesApp(App): def __init__(self, **kwargs): super(MoviesApp, self).__init__(**kwargs) url = MovieDatabase.construct_mysql_url('localhost', 3306, 'movies', 'root', 'cse') self.movie_database = MovieDatabase(url) self.session = self.movie_database.create_session() @staticmethod def _create_movie(session, title, budget, gross_revenue): movie = Movie(title=title, budget=budget, gross_revenue=gross_revenue) session.add(movie) session.commit() def create_movie(self, title, budget, gross_revenue): try: budget = int(budget) * 1000000 gross_revenue = int(gross_revenue) * 1000000 except ValueError as exception: self.root.ids.message.text = 'Formatting error: {exception}'.format(exception=exception) return try: self._create_movie(self.session, title, budget, gross_revenue) self.root.ids.message.text = 'Movie added!' except SQLAlchemyError as exception: self.session.rollback() self.root.ids.message.text = 'Database error: {exception}'.format(exception=exception) def main(): try: app = MoviesApp() app.run() except SQLAlchemyError as exception: print('Initial database connection failed!', file=stderr) print('Cause: {exception}'.format(exception=exception), file=stderr) exit(1) if __name__ == '__main__': main()