Sobes.tech
Назад к вопросам
Middle+
4

import psycopg2 def save_prediction(text: str, result: str): conn = psycopg2.connect("host=db user=app password=secret dbname=ml") cur = conn.cursor() cur.execute( "INSERT INTO predictions (input, output) VALUES (%s, %s)", (text, result) ) conn.commit() cur.close()

Компании, где спрашивали
экзон

Ответ от нейросети

sobes.tech AI

В представленном коде есть несколько проблем, связанных с управлением ресурсами и обработкой ошибок:

  1. Соединение с базой и курсор не закрываются в случае исключения, что может привести к утечкам ресурсов.
  2. Лучше использовать контекстные менеджеры with для автоматического закрытия соединения и курсора.

Исправленный вариант функции:

import psycopg2

def save_prediction(text: str, result: str):
    try:
        with psycopg2.connect("host=db user=app password=secret dbname=ml") as conn:
            with conn.cursor() as cur:
                cur.execute(
                    "INSERT INTO predictions (input, output) VALUES (%s, %s)",
                    (text, result)
                )
            # commit вызывается автоматически при выходе из блока with
    except psycopg2.Error as e:
        print(f"Ошибка при сохранении предсказания: {e}")
        # Можно добавить логирование или повторную генерацию исключения

Такой подход гарантирует корректное закрытие соединения и курсора, а также обработку возможных ошибок.