Как исправить ошибку AttributeError, связанную с отсутствием атрибута 'db_file' у объекта 'Database'?

Как исключить ошибку в коде, которую вы видите в контексте использования Python для работы с базами данных SQLite и как улучшить этот код?
  • 12 марта 2024 г. 9:59
Ответы на вопрос 2
Для исправления ошибки AttributeError, связанной с отсутствием атрибута 'db_file', необходимо убедиться, что атрибут 'db_file' соответствующим образом определен в классе Database, либо проверить правильность обращения к этому атрибуту.

Чтобы исключить ошибку в коде при работе с базой данных SQLite, можно использовать следующий пример улучшенного кода:

```python
import sqlite3

class Database:
    def __init__(self, db_file):
        self.db_file = db_file
        self.connection = sqlite3.connect(self.db_file)
        self.cursor = self.connection.cursor()
    
    def create_table(self, table_name, columns):
        columns_str = ', '.join(columns)
        query = f"CREATE TABLE IF NOT EXISTS {table_name} ({columns_str})"
        self.cursor.execute(query)
        self.connection.commit()
    
    def insert_data(self, table_name, data_dict):
        columns = ', '.join(data_dict.keys())
        placeholders = ', '.join(['?' for _ in range(len(data_dict))])
        query = f"INSERT INTO {table_name} ({columns}) VALUES ({placeholders})"
        values = list(data_dict.values())
        self.cursor.execute(query, values)
        self.connection.commit()
    
    def read_data(self, table_name):
        query = f"SELECT * FROM {table_name}"
        self.cursor.execute(query)
        rows = self.cursor.fetchall()
        return rows

    def close_connection(self):
        self.cursor.close()
        self.connection.close()

# Пример использования класса Database
db = Database('my_database.db')
db.create_table('users', ['id INTEGER', 'name TEXT', 'age INTEGER'])
db.insert_data('users', {'id': 1, 'name': 'Alice', 'age': 30})
result = db.read_data('users')
print(result)
db.close_connection()
```

В улучшенном коде добавлены методы для создания таблицы, вставки данных и чтения данных из базы SQLite. Также добавлен метод для закрытия соединения с базой данных. Это поможет избежать ошибок и улучшит структуру кода для работы с базой данных.
AttributeError: 'Database' object has no attribute 'db_file', как исправить?

В каком то коде (не в представленном Вами) Вы пытаетесь получить db_file класса Database. Показывайте тот код, где используется db_file, тогда будет ответ точнее.

И еще несколько недочетов:
# if refererr_worker_id != None:
if refererr_worker_id is not None:

# return self.cursor.execute("INSERT INTO 'shit' ('worker_id'), ('referrer_worker_id') VALUES (?,?) ", (worker_id, refererr_worker_id,))
return self.cursor.execute("SELECT * FROM shit WHERE worker_id = ?", (worker_id,)).fetchall()
Похожие вопросы