Skip to content

8. (П4) Обробка помилок і транзакції

Передумови

Завдання

Написати Python-програму для управління банківськими рахунками з використанням обробки помилок та транзакцій.

Крок 1. Створення таблиці та початкових даних

Створити таблицю accounts та заповнити її початковими даними:

CREATE TABLE IF NOT EXISTS accounts (
    id SERIAL PRIMARY KEY,
    owner VARCHAR(100) NOT NULL,
    balance NUMERIC(12, 2) NOT NULL DEFAULT 0,
    CHECK (balance >= 0)
);

Додати мінімум 3 рахунки з початковим балансом (наприклад, 1000, 500, 200).

Крок 2. Обробка помилок підключення

Програма повинна коректно обробляти помилки підключення до БД — виводити зрозуміле повідомлення без traceback:

$ python bank.py
Помилка підключення до БД: connection refused
Перевірте, чи запущено PostgreSQL

Крок 3. Функція переказу коштів

Реалізувати функцію transfer(conn, from_id, to_id, amount), яка:

  • Переказує кошти з одного рахунку на інший в одній транзакції
  • Використовує контекстний менеджер with conn: для автоматичного commit/rollback
  • Обробляє такі помилки:
    • Рахунок не знайдено → зрозуміле повідомлення
    • Недостатньо коштів → зрозуміле повідомлення
    • psycopg2.IntegrityError (порушення CHECK) → зрозуміле повідомлення

Крок 4. Вивід стану рахунків

Реалізувати функцію, яка виводить поточний стан усіх рахунків у форматі:

Банківська система — <Ваші ім'я та прізвище>
ID | Власник       | Баланс
1  | Олена         | 850.00
2  | Тарас         | 600.00
3  | Марія         | 250.00

Крок 5. Command line інтерфейс

Програма повинна підтримувати command line аргументи:

  • transfer <from_id> <to_id> <amount> — переказ коштів
  • status — вивід стану всіх рахунків (з іменем студента)
$ python bank.py status
$ python bank.py transfer 1 2 100

Знайшли помилку чи бажаєте додати інформацію, щоб покращити курс? Створіть issue на GitHub