Задать вопрос
@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 раз, такая таблица есть, я ее кинул в ту же папку что и питон прогу. Пробовал указать путь с проводника - не получилось
  • Вопрос задан
  • 131 просмотр
Подписаться 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
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

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

Похожие вопросы