Найти - Пользователи
Полная версия: Подключение к бд и close()
Начало » Python для новичков » Подключение к бд и close()
1
NanKol
Привет всем. Ответьте, пожалуйста, глупому человеку.
У нас есть существующее соединение к удалённой бд(mysql) посредством pymysql. Что произойдёт, если мы завершим выполнение программы предварительно закрыв соединение, но без доступа в интернет? Останется ли дальше существовать соединение в mysql, как когда мы просто завершаем выполнение программы не закрыв соединение?
ZerG
В Mysql как и других базах есть менеджер соединений
Он обнаружит что соединение потеряно и очистит его

Закрывать соединения нужно в циклических обработках
Если вы неправильно написали код то к примеру для каждой вставки данных будете открывать новое соединение - через какоетовремя ресурсы где крутится бд исчерпаются и всех пошлет нафиг

Тут нужно понимать что и как вы вставляете возможно вам пригодится pool
Ну а закрывать курсор - дело нужно инача рискуете потерять данные в процессе
py.user.next
NanKol
Что произойдёт, если мы завершим выполнение программы предварительно закрыв соединение, но без доступа в интернет?
Ничего не понял. Ты собрался отключаться от базы данных без закрытия курсора и без коммита транзакции? Ну потеряешь данные, которые ты там якобы поназаписывал в базу. Они просто не запишутся в базу. Соединение будет висеть ещё какое-то время, потом СУБД обнаружит, что оно дохлое и очистит его и закроет. В процессе этого есть малая вероятность, что кто-то с твоими данными подключится к базе данных и она будет думать, что это ты продолжаешь с ней работать. Вообще, там надо протокол прочитать. В них обычно более подробно всё указано и формально описано. Но поймёшь ли ты эти описания?

Вот он описан у них на сайте
https://dev.mysql.com/doc/dev/mysql-server/latest/PAGE_PROTOCOL.html

Так что общее правило: всё закрывай в том же (в обратном) порядке, в котором открывал, и отключайся в том же (в обратном) порядке, в котором подключался.

Пример (на псевдокоде)
open connection
connect to database
open database cursor

make database operations
commit database transaction

close database cursor
disconnect from database
close connection
This is a "lo-fi" version of our main content. To view the full version with more information, formatting and images, please click here.
Powered by DjangoBB