Для исправления ошибки 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. Также добавлен метод для закрытия соединения с базой данных. Это поможет избежать ошибок и улучшит структуру кода для работы с базой данных.