From 4d89dfaf7443e8fae90143eea38753698922e6bd Mon Sep 17 00:00:00 2001 From: Yeva Date: Mon, 4 Sep 2023 16:39:42 +0300 Subject: [PATCH 1/6] Solution --- app/cinema_db.db3 | Bin 0 -> 8192 bytes app/main.py | 26 ++++++++++++------------- app/managers.py | 47 ++++++++++++++++++++++++++++++++++++++++++++++ app/models.py | 8 ++++++++ 4 files changed, 68 insertions(+), 13 deletions(-) create mode 100644 app/cinema_db.db3 create mode 100644 app/managers.py create mode 100644 app/models.py diff --git a/app/cinema_db.db3 b/app/cinema_db.db3 new file mode 100644 index 0000000000000000000000000000000000000000..500d503d3b61348a34ba2c5ddad9e71951fdc659 GIT binary patch literal 8192 zcmeI#&r8EF6bJBR6uh|2OOYOgcid!nP<9pL47#mWjn%P(NZeXhX&Y#B^s;}=zs!`; zo8VdYefjxPDD5Yw_xu!QHlfs1g|>9Tju_|ciik1Rb)(}(8{BQYHgRi{{}o+!wwN_9 z;{7k?IsyU^fB*y_009U<00Izz00bbgcLH0^4~~O?Z{Mu`$P>M?rmA;yXQHHtCB@=8 zl(ajeLAIu86w6zw=uu7Yg<8^FE-8A5DS8RR5v5sG+xJoz3B3w6xf6;8=i~8kM7jR; z!LX^#UD40_-%Z=QE5Hv!00Izz00bZa0SG_<0uX=z1pbe}WpHw%%Ph&2Ua#^jP28uS c`u@yp%4lOgU3S=JJ None: + self._connection = sqlite3.connect("cinema_db.db3") + self.table_name = "actors" + + def create(self, first_name: str, last_name: str) -> None: + self._connection.execute( + f"INSERT INTO {self.table_name} " + f"(first_name, last_name) VALUES (?, ?)", + (first_name, last_name), + ) + self._connection.commit() + + def all(self) -> List[Actor]: + actors_cursor = self._connection.execute( + f"SELECT * FROM {self.table_name}" + ) + + return [Actor(*row) for row in actors_cursor] + + def update( + self, id_to_update: int, new_first_name: str, new_last_name: str + ) -> None: + self._connection.execute( + f"UPDATE {self.table_name} " + f"SET first_name = ?, last_name = ?" + f"WHERE id = ?", + (new_first_name, new_last_name, id_to_update), + ) + self._connection.commit() + + def delete(self, id_to_delete: int) -> None: + self._connection.execute( + f"DELETE FROM {self.table_name} " f"WHERE id = ?", (id_to_delete,) + ) + self._connection.commit() + + +if __name__ == "__main__": + manager = ActorManager() + print(manager.all()) diff --git a/app/models.py b/app/models.py new file mode 100644 index 00000000..3e228ce3 --- /dev/null +++ b/app/models.py @@ -0,0 +1,8 @@ +from dataclasses import dataclass + + +@dataclass +class Actor: + id: int + first_name: str + last_name: str From eda022b06d9c6f3ed437cc8b31f8079e3e3102ac Mon Sep 17 00:00:00 2001 From: Yeva Date: Wed, 6 Sep 2023 17:57:06 +0300 Subject: [PATCH 2/6] Added check for existing table --- app/managers.py | 10 ++++++++++ 1 file changed, 10 insertions(+) diff --git a/app/managers.py b/app/managers.py index 8ce90430..aed74606 100644 --- a/app/managers.py +++ b/app/managers.py @@ -9,6 +9,16 @@ def __init__(self) -> None: self._connection = sqlite3.connect("cinema_db.db3") self.table_name = "actors" + with self.connection: + self.connection.execute( + f"CREATE TABLE IF NOT EXISTS {self.table_name}" + f"(" + f"id INTEGER PRIMARY KEY," + f"first_name VARCHAR(63) NOT NULL," + f"last_name VARCHAR(63) NOT NULL" + f")" + ) + def create(self, first_name: str, last_name: str) -> None: self._connection.execute( f"INSERT INTO {self.table_name} " From a50031fb6e451e4643ed0dc8ca6ccd3dff4b7ffa Mon Sep 17 00:00:00 2001 From: Yeva Date: Thu, 7 Sep 2023 20:16:02 +0300 Subject: [PATCH 3/6] Fixed --- app/cinema_db.db3 | Bin 8192 -> 0 bytes app/managers.py | 7 ++++--- 2 files changed, 4 insertions(+), 3 deletions(-) delete mode 100644 app/cinema_db.db3 diff --git a/app/cinema_db.db3 b/app/cinema_db.db3 deleted file mode 100644 index 500d503d3b61348a34ba2c5ddad9e71951fdc659..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8192 zcmeI#&r8EF6bJBR6uh|2OOYOgcid!nP<9pL47#mWjn%P(NZeXhX&Y#B^s;}=zs!`; zo8VdYefjxPDD5Yw_xu!QHlfs1g|>9Tju_|ciik1Rb)(}(8{BQYHgRi{{}o+!wwN_9 z;{7k?IsyU^fB*y_009U<00Izz00bbgcLH0^4~~O?Z{Mu`$P>M?rmA;yXQHHtCB@=8 zl(ajeLAIu86w6zw=uu7Yg<8^FE-8A5DS8RR5v5sG+xJoz3B3w6xf6;8=i~8kM7jR; z!LX^#UD40_-%Z=QE5Hv!00Izz00bZa0SG_<0uX=z1pbe}WpHw%%Ph&2Ua#^jP28uS c`u@yp%4lOgU3S=JJ None: def all(self) -> List[Actor]: actors_cursor = self._connection.execute( - f"SELECT * FROM {self.table_name}" + f"SELECT * " + f"FROM {self.table_name}" ) return [Actor(*row) for row in actors_cursor] @@ -47,11 +48,11 @@ def update( def delete(self, id_to_delete: int) -> None: self._connection.execute( - f"DELETE FROM {self.table_name} " f"WHERE id = ?", (id_to_delete,) + f"DELETE FROM {self.table_name} " + f"WHERE id = ?", (id_to_delete,) ) self._connection.commit() if __name__ == "__main__": manager = ActorManager() - print(manager.all()) From 76badc6a4fc854e55d82a960fd4d1f0536d07233 Mon Sep 17 00:00:00 2001 From: Yeva Date: Thu, 7 Sep 2023 20:17:12 +0300 Subject: [PATCH 4/6] Flake8 --- app/managers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/managers.py b/app/managers.py index 3303eba6..4de26d43 100644 --- a/app/managers.py +++ b/app/managers.py @@ -48,7 +48,7 @@ def update( def delete(self, id_to_delete: int) -> None: self._connection.execute( - f"DELETE FROM {self.table_name} " + f"DELETE FROM {self.table_name} " f"WHERE id = ?", (id_to_delete,) ) self._connection.commit() From 2c525b9945b1a9f9fee196c8aa4181df1154048a Mon Sep 17 00:00:00 2001 From: Yeva Date: Thu, 7 Sep 2023 20:20:56 +0300 Subject: [PATCH 5/6] Added space --- app/managers.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/managers.py b/app/managers.py index 4de26d43..e2467ee9 100644 --- a/app/managers.py +++ b/app/managers.py @@ -40,7 +40,7 @@ def update( ) -> None: self._connection.execute( f"UPDATE {self.table_name} " - f"SET first_name = ?, last_name = ?" + f"SET first_name = ?, last_name = ? " f"WHERE id = ?", (new_first_name, new_last_name, id_to_update), ) From 59add47e09386cca7f4fce56131659542059c4a5 Mon Sep 17 00:00:00 2001 From: Yeva Date: Thu, 7 Sep 2023 20:25:47 +0300 Subject: [PATCH 6/6] Fixed _connection --- app/managers.py | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/app/managers.py b/app/managers.py index e2467ee9..ad56097a 100644 --- a/app/managers.py +++ b/app/managers.py @@ -9,8 +9,8 @@ def __init__(self) -> None: self._connection = sqlite3.connect("cinema_db.db3") self.table_name = "actors" - with self.connection: - self.connection.execute( + with self._connection: + self._connection.execute( f"CREATE TABLE IF NOT EXISTS {self.table_name}" f"(" f"id INTEGER PRIMARY KEY,"