Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import sqlite3
- class SQLiter:
- def __init__(self, path_to_db="main.db"):
- self.path_to_db = path_to_db
- @property
- def connection(self):
- """СВЯЗЫВАЕМСЯ С БАЗОЙ"""
- return sqlite3.connect(self.path_to_db)
- def execute(self, sql: str, parameters: tuple = None, fetchone=False, fetchall=False, commit=False):
- """МЕТОД СОЗДАЮЩИЙ СОЕДИНЕНИЕ, ОТПРАВЛЯЮЩИЙ ЗАПРОС БАЗЕ И СОХРАНЯЮЩИЙ ИЗМЕНЕНИЯ"""
- if not parameters:
- parameters = ()
- connection = self.connection
- connection.set_trace_callback(logger)
- cursor = connection.cursor()
- data = None
- cursor.execute(sql, parameters)
- if commit:
- connection.commit()
- if fetchall:
- """если нужны все значения"""
- data = cursor.fetchall()
- if fetchone:
- """если нужно одно значение"""
- data = cursor.fetchone()
- connection.close()
- return data
- def create_table_users(self):
- """создаем таблицу юзеров"""
- sql = """
- CREATE TABLE Users (
- id int NOT NULL,
- Name varchar(255) NOT NULL,
- email varchar(255),
- PRIMARY KEY (id)
- );
- """
- self.execute(sql, commit=True)
- @staticmethod
- def format_args(sql, parameters: dict):
- """МЕТОД ПОЗВОЛЯЮЩИЙ ПОДСТАВЛЯТЬ АРГУМЕНТЫ В SQL ЗАПРОСЫ"""
- sql += " AND ".join([
- f"{item} = ?" for item in parameters
- ])
- return sql, tuple(parameters.values())
- def add_user(self, id: int, name: str, email: str = None):
- """добавляем юзера"""
- # SQL_EXAMPLE = "INSERT INTO Users(id, Name, email) VALUES(1, 'John', '[email protected]')"
- sql = """
- INSERT INTO Users(id, Name, email) VALUES(?, ?, ?)
- """
- self.execute(sql, parameters=(id, name, email), commit=True)
- def select_all_users(self):
- """забираем из базы всех юзеров"""
- sql = """
- SELECT * FROM Users
- """
- return self.execute(sql, fetchall=True)
- def select_user(self, **kwargs):
- """Выбираем юзера"""
- # SQL_EXAMPLE = "SELECT * FROM Users where id=1 AND Name='John'"
- sql = "SELECT * FROM Users WHERE "
- sql, parameters = self.format_args(sql, kwargs)
- return self.execute(sql, parameters=parameters, fetchone=True)
- def count_users(self):
- """считаем всех юзеров"""
- return self.execute("SELECT COUNT(*) FROM Users;", fetchone=True)
- def update_user_email(self, email, id):
- """делаем апдейт данных в базе"""
- # SQL_EXAMPLE = "UPDATE Users SET [email protected] WHERE id=12345"
- sql = f"""
- UPDATE Users SET email=? WHERE id=?
- """
- return self.execute(sql, parameters=(email, id), commit=True)
- def delete_users(self):
- """удаляем всех юзеров"""
- self.execute("DELETE FROM Users WHERE TRUE", commit=True)
- def logger(statement):
- """ВЫВОДИМ РЕЗУЛЬТАТЫ В КОНСОЛЬ"""
- print(f"""
- _____________________________________________________
- Executing:
- {statement}
- _____________________________________________________
- """)
- def test():
- db = SQLiter()
- db.create_table_users()
- db.add_user(1, "One", "email")
- db.add_user(3, 1, 1)
- db.add_user(4, 1, 1)
- users = db.select_all_users()
- print(f"Получил всех пользователей: {users}")
- user = db.select_user(Name="John", id=5)
- print(f"Получил пользователя: {user}")
- users = db.select_all_users()
- print(f"Получил всех пользователей: {users}")
- user = db.select_user(id=1)
- print(f"Получил пользователя c изм имейлом: {user}")
- count = db.count_users()
- print(f"ВСЕГО ПОЛЬЗОВАТЕЛЕЙ: {count}")
- test()
Advertisement
Add Comment
Please, Sign In to add comment