import sqlite3 def test_sqlite(): try: con = sqlite3.connect("mydb.sqlite") except sqlite3.Error as er: print("Error connecting to database:", er) cur = con.cursor() sql_query = "INSERT INTO user VALUES(?, ?)" sql_data = ("John", "MacDonald") try: cur.execute(sql_query, sql_data) con.commit() except sqlite3.Error as er: print('SQLite error: %s' % (' '.join(er.args))) print("Exception class is: ", er.__class__) print('SQLite traceback: ') finally: con.close() class DatabaseManager: def __init__(self, db_name): self.db_name = db_name def __enter__(self): try: self.conn = sqlite3.connect(self.db_name) except sqlite3.Error as e: print("Error connecting to database:", e) return None else: return self.conn def __exit__(self, exc_type, exc_value, traceback): try: self.conn.close() except AttributeError: print("Database connection not established") except sqlite3.Error as e: print("An error occured while closing the database connection: ", e) def test_context(): with DatabaseManager("mydb.sqlite") as conn: if conn: cur = conn.cursor() sql_query = "INSERT INTO user VALUES(?, ?)" sql_data = ("Jogn", "MacDonald") cur.execute(sql_query, sql_data) conn.commit() def main(): # test_sqlite() test_context() if __name__ == '__main__': main()