Ошибка при подключении к БД, как решить проблему?
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 автоматически создаст пустую БД, можете переместить вашу базу из папки со скриптом и заново его запустить, тогда в папке со скриптом должна будет автоматически создаться пустая база. Если этого не произойдёт, то значит путь указывается неверно.