Форум сайта python.su
Привет всем. Ответьте, пожалуйста, глупому человеку.
У нас есть существующее соединение к удалённой бд(mysql) посредством pymysql. Что произойдёт, если мы завершим выполнение программы предварительно закрыв соединение, но без доступа в интернет? Останется ли дальше существовать соединение в mysql, как когда мы просто завершаем выполнение программы не закрыв соединение?
Офлайн
В Mysql как и других базах есть менеджер соединений
Он обнаружит что соединение потеряно и очистит его
Закрывать соединения нужно в циклических обработках
Если вы неправильно написали код то к примеру для каждой вставки данных будете открывать новое соединение - через какоетовремя ресурсы где крутится бд исчерпаются и всех пошлет нафиг
Тут нужно понимать что и как вы вставляете возможно вам пригодится pool
Ну а закрывать курсор - дело нужно инача рискуете потерять данные в процессе
Офлайн
NanKolНичего не понял. Ты собрался отключаться от базы данных без закрытия курсора и без коммита транзакции? Ну потеряешь данные, которые ты там якобы поназаписывал в базу. Они просто не запишутся в базу. Соединение будет висеть ещё какое-то время, потом СУБД обнаружит, что оно дохлое и очистит его и закроет. В процессе этого есть малая вероятность, что кто-то с твоими данными подключится к базе данных и она будет думать, что это ты продолжаешь с ней работать. Вообще, там надо протокол прочитать. В них обычно более подробно всё указано и формально описано. Но поймёшь ли ты эти описания?
Что произойдёт, если мы завершим выполнение программы предварительно закрыв соединение, но без доступа в интернет?
open connection
connect to database
open database cursor
make database operations
commit database transaction
close database cursor
disconnect from database
close connection
Отредактировано py.user.next (Дек. 6, 2023 00:24:05)
Офлайн