Назад к вопросам
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
В представленном коде есть несколько проблем, связанных с управлением ресурсами и обработкой ошибок:
- Соединение с базой и курсор не закрываются в случае исключения, что может привести к утечкам ресурсов.
- Лучше использовать контекстные менеджеры
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}")
# Можно добавить логирование или повторную генерацию исключения
Такой подход гарантирует корректное закрытие соединения и курсора, а также обработку возможных ошибок.