Тема: Класс для роботи sqlite подивіться будьласка.
Прошу тих хто шарить. Подивіться будьласка на класс для роботи sqlite чи він може рахуватись адекватно написаним ?
Що треба поправити
# -*- coding: utf-8 -*-
import sqlite3
class SQLighte():
def __init__(self, database = "users.db", telegram_id):
self.connection = sqlite3.connect(database)
self.cursor = self.connection.cursor()#open database
self.table_name = "a"+telegram_id#Ім'я таблиці в sqlite мусить починатись злітери
def create_table(self):#Створює таблицю в базі данних для кожного нового юзера де table_name id користувача в телеграм
try:
self.cursor.execute(f"CREATE TABLE {self.table_name} (id integer, name text, satiety integer, satiety_cykle integer, bag text, emotion text, despair integer, pers_history text)")
return(True)
except sqlite3.OperationalError: # ...якщо юзер є в базі данних то ...
return(False)
def deleted_table(self):#Видаляєм таблицю з бази
try:
self.cursor.execute(f"DROP TABLE {self.table_name}")
return(True)
except sqlite3.OperationalError: # таблиця з іменем не знайдена
print("No such user was found")
return(False)
def write_starting_data_to_table(self, data):#Запис початкових данних для окремрго користувача до бази данних
numbers = range(len(data))
with self.connection:
try:
for number in numbers:
self.cursor.execute(f"INSERT INTO {self.table_name} Values(?,?,?,?,?,?,?,?)", ( data[number][0], data[number][1], data[number][2], data[number][3], data[number][4],data[number][5], data[number][6], data[number][7], ))
return True:
except IndexError:
return False)
def select_single(self, rownumber, column, xdata):#Получаєм рядок з таблиці table_name в котрому в колонці column значення==xdata
with self.connection:
try:
return self.cursor.execute(f"SELECT * FROM {self.table_name} WHERE {column} = ?", (xdata,)).fetchall()[0]
except IndexError :
return(None)
def edit_user_data(self,replace_column, replace_data, condition_column, condition_data):#Невпевненмй що ця функція робоча
"""
replace_column - стовбець в якому буде перезаписано дані
replace_data - нові дані котрі треба записати в таблицю
condition_column - стовбець уова має дорівнювати с condition_data(дані для порівняння)
"""
with self.connection:
try:
self.cursor.execute(f"UPDATE {self.table_name} SET{replace_column}={replace_data} WHERE {condition_column}={condition_data}"
return(True)
except IndexError & sqlite3.OperationalError:
return(False)
def __del__(self):#Зберігаєм зміни та закриваєм поточне з'єднання з БД """
self.connection.commit()
self.connection.close()
.