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

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

Похожие вопросы
Greenway Global Новосибирск
от 150 000 ₽
SPA2099 Москва
До 100 000 ₽
HR Prime Москва
от 300 000 до 3 800 000 ₽