From ae516dc167dd4a2a8e57061e689ff6971c3d058e Mon Sep 17 00:00:00 2001 From: SafonovaEkaterina Date: Tue, 25 Oct 2022 20:39:42 +0300 Subject: [PATCH] add task lec.13 --- Practice/esafonova/humans.db | Bin 0 -> 12288 bytes Practice/esafonova/task13.1.py | 47 +++++++++++++++++++++++++++++++++ 2 files changed, 47 insertions(+) create mode 100644 Practice/esafonova/humans.db create mode 100644 Practice/esafonova/task13.1.py diff --git a/Practice/esafonova/humans.db b/Practice/esafonova/humans.db new file mode 100644 index 0000000000000000000000000000000000000000..b2668eabaf8b6ccbd0b613d2236ba04533fd0edc GIT binary patch literal 12288 zcmeI&O-jQ+6bJB`Gzb+#Nf;S+XZrYF&r0)?w_+HF6e-@80YMWh%sjB*3iw+jW5SCS4Elo zD@?Y3_-5H7#_cw<+qy$Q00Izz00bZa0SG_<0uX=z1pb9UU~F{yeI6C@?L_6%iT*sk z$<=hG(!2U&<0KT06eOMFp`hB@UK%HApey(EwO%{jE`PD+dp^#RIL#Nmv9iM=N4-t@ z5#tfLz7(e-q#$%XCyeM!MC4q_bJy49p77;hrJ{T>NpW3E#}BI7>3ey3wt3i}_IowQ z2muH{00Izz00bZa0SG_<0uX?}x(YN6lWp@r71>Ucms2m!o_4MBIxWWRk9EBl&J6(w cKmY;|fB*y_009U<00Izzz%K$@eEI*u7u>8<#{d8T literal 0 HcmV?d00001 diff --git a/Practice/esafonova/task13.1.py b/Practice/esafonova/task13.1.py new file mode 100644 index 0000000..7246253 --- /dev/null +++ b/Practice/esafonova/task13.1.py @@ -0,0 +1,47 @@ +# 1.Написать класс-обертку над SQLite (с возможностями менеджера контекста), +# которая может на вход принимать строки SQL запросов и возвращать данные в формате json. +# Класс должен иметь, как минимум, методы select и execute. +import json +import sqlite3 as sq + + +class SqLiteWrapper: + def __init__(self, db_name): + with sq.connect(db_name) as self.con: + self.cur = self.con.cursor() + + def select(self, req): + self.cur.execute(req) + data = self.cur.fetchall() + print(data) + response = [] + for i in range(len(data)): + object_map = {} + for j in range(len(data[i])): + key = self.cur.description[j][0] + value = data[i][j] + object_map[key] = value + response.append(object_map) + return json.dumps(response) + + def execute(self, req): + self.cur.executescript(req) + if 'CREATE' in req: + return json.dumps({'table': 'created'}) + elif 'INSERT' in req: + return json.dumps({'data': 'inserted'}) + elif 'DROP' in req: + return json.dumps({'table': 'dropped'}) + + +if __name__ == '__main__': + my_connector = SqLiteWrapper('humans.db') + print(my_connector.execute("""CREATE TABLE IF NOT EXISTS humans ( + id INTEGER PRIMARY KEY AUTOINCREMENT, + name TEXT, + age INTEGER + )""")) + print(my_connector.execute("INSERT INTO humans VALUES(1,'Mark',33)")) + print(my_connector.execute("INSERT INTO humans VALUES(2,'Petr',29)")) + print(my_connector.select("SELECT * FROM humans")) + print(my_connector.execute("DROP TABLE humans"))