Top.Mail.Ru
Ответы

Ошибка в питоне возникла)

я пытаюсь импортировать класс DB из самописанного модуля Database.

1
 from Database import DB 

но он выдает мне это:

12345
 Traceback (most recent call last): 
  File "c:\Users\inkoa\Desktop\python-testings!\my_bot\main.py", line 5, in <module> 
    db = Database.DB('database.db') 
         ^^^^^^^^^^^ 
AttributeError: module 'Database' has no attribute 'DB' 

Код самого модуля выглядит вот так:

123456789101112131415
 import sqlite3 
 
class DB: 
    def __init__(self, database_file: str): 
        self.connection = sqlite3.connect(database_file) 
        self.cursor = self.connection.cursor() 
     
    def new_user(self, user_id: int): 
        with self.connection: 
            self.cursor.execute("INSERT INTO users ('user_id') VALUES(?,)", (user_id)) 
    def user_exist(self, user_id: int): 
        with self.connection: 
            result = self.cursor.execute("SELECT * FROM users WHERE 'user_id' = ?", (user_id,)) 
            return bool(len(result)) 
 

Почему он не видит класс DB?

По дате
По рейтингу
Аватар пользователя
Новичок

Либо:

12
 import Database
db = Database.DB('database.db') 

Либо:

12
 from Database import DB
db = DB('database.db') 

Но никак не вперемешку.

Аватар пользователя
Ученик

import sqlite3

class DB:
def __init__(self, database_file: str):
self.connection = sqlite3.connect(database_file)
self.cursor = self.connection.cursor()

def new_user(self, user_id: int):
with self.connection:
self.cursor.execute("INSERT INTO users (user_id) VALUES(?)", (user_id,))

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