Задать вопрос
@mrcoldurfuck

Sqlite3.OperationalError: no such table: users. Как решить проблему?

import sqlite3
import sys
import pathlib

script_dir = pathlib.Path(sys.argv[0]).parent
db_file = script_dir / 'database.db'
conn = sqlite3.connect(db_file)

class Database:
    def __init__(self, db_file):
        self.connection = sqlite3.connect('db_file', check_same_thread=False)
        self.cursor = self.connection.cursor()
        script_dir = pathlib.Path(sys.argv[0]).parent
        db_file = script_dir / 'database.db'
        conn = sqlite3.connect(db_file)
    def user_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:
            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,)).fetchmoney()
            return int(result[0][0])
    def set_money(self, user_id, money):
        with self.connection:
            return self.cursor.execute("UPDATE 'users' SET 'money' = ? WHERE 'user_id' = ?", (money, user_id))


Вот код проги, я не понимаю как указать путь до файла базы данных, чтобы питон нашел его.
P.S. перепроверил 10 раз, такая таблица есть, я ее кинул в ту же папку что и питон прогу. Пробовал указать путь с проводника - не получилось
  • Вопрос задан
  • 135 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 1
@mrcoldurfuck Автор вопроса
Я нашел решение проблемы, надо было переписать инициализацию класса, короче надо init вот так переписать:
self.connection = sqlite3.connect('db_file', check_same_thread=False)
        self.cursor = self.connection.cursor()
        db = self.connection
        c = db.cursor()
        c.execute("""CREATE TABLE users (
    id      INTEGER PRIMARY KEY AUTOINCREMENT,
    user_id INTEGER NOT NULL,
    money   INTEGER NOT NULL
                    DEFAULT (0) 
);""")
.
Здесь странная табуляция, чтобы вы не запутались прикреплю скрин.
62fb5db4822de599408821.png
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
от 200 000 до 300 000 ₽
Greenway Global Новосибирск
от 150 000 ₽
Akronix Санкт-Петербург
от 150 000 до 200 000 ₽
02 февр. 2025, в 00:55
2500 руб./за проект
02 февр. 2025, в 00:25
5000 руб./за проект
02 февр. 2025, в 00:18
1000 руб./за проект