Ошибка при подключении к БД, как решить проблему?

import sqlite3
class DataBase:
    def __init__(self, db_file):
        self.connection = sqlite3.connect(db_file)
        self.cursor = self.connection.cursor()

    def users_exists(self, user_id):
        with self.connection:
            result = self.cursor.execute('SELECT * FROM `users` WHERE `user_id` = ?', (user_id,)).fetchall()
            return bool(len(result))

    def add_user(self, user_id):
        with self.connection:
            return self.cursor.execute('INSERT INTO users (user_id) VALUES (?)', (user_id,))

    def user_money(self, user_id):
        with self.connection:
            result = self.cursor.execute('SELECT money FROM `users` WHERE user_id = ?', (user_id,)).fetchall()
            return int(result[0][0])

    def add_money(self, user_id, money):
        with self.connection:
            return self.cursor.execute('UPDATE users SET money = ? WHERE user_id = ?', (money, user_id,))

    def add_check(self, user_id, money, bill_id):
        with self.connection:
            self.cursor.execute('INSERT INTO `check` (`user_id`, `money`, `bill_id`) VALUES (?,?,?)', (user_id, money, bill_id,))

    def get_check(self, bill_id):
        with self.connection:
            result = self.cursor.execute('SELECT * FROM  `check` WHERE `bill_id` = ?', (bill_id,)).fetchall()   
            if not bool(len(result)):
                return False
            return result[0]

    def delate_check(self, bill_id):
        with self.connection:
            self.cursor.execute('DELETE FROM `check` WHERE `bill_id` = ?', (bill_id,))

Вот мой код, который должен взаимодецствовать с БД, но он не подключается к нему. Файл с БД есть с папке с питоновским файлом, все перепроверил в SQLlitestudio. Сама ошибка: no such table: users Вот скриншот с БД


Ответы (1 шт):

Автор решения: Павел

Создал новую БД, в ней таблицу users, запустил ваш код с моей только что созданной базой - всё отработало успешно.

Вариантов такого поведения у вас не так много, а конкретно - один:

sqlite не может подключиться к БД по указанному вами пути и создаёт по этому пути пустую базу без этой таблицы. Происходит это скорее всего из-за того, что некорректно указан путь, самая типовая проблема: указание относительного пути вместо абсолютного, потому что sqlite ищет базу в папке со скриптом.

Что можно посоветовать: проверяйте, что путь к указанной базе соответствует действительности.

Также полезно знать, что в случае отсутствия БД по требуемому пути sqlite автоматически создаст пустую БД, можете переместить вашу базу из папки со скриптом и заново его запустить, тогда в папке со скриптом должна будет автоматически создаться пустая база. Если этого не произойдёт, то значит путь указывается неверно.

→ Ссылка