6

Вопросы Незнайки по программированию на Python (вопрос 1)

Разъясните сущность получения соединения с базой и курсора и что происходит в неожиданных ситуациях.

Товарищи, прошу не уничтожать сильно за описанные вопросы. Я просто учусь. Искренне надеюсь на помощь сообщества и некоторое наставничество.

По результатам данного вопроса и предложенным вами материалам к прочтению, обязуюсь разобраться основательно и выпустить по этому поводу пост для тех, кто задумается о том же.

Возможно, ответы на ои вопросы есть в документации или являются базовыми, однако, я не нашёл ответов или плохо искал.

Речь пойдёт про работу с базой данных PostgreSQL в приложении на Python.

Итак. Из базовых описаний процесса работы мы знаем, что при работе с БД требуется провести простой объём операций, в частности:

# Создать объект "соединение"
conn = psycopg2.connect(паратметры)
# Получить курсор по этому соединению
cursor = conn.cursor()
# Формируем какой-то запрос
cursor .execute("Запрос на вставку данных в базу")
# Отправляем данные в базу
conn .commit()
# Закрываем соединение
conn .close()

Кажется всё просто. Но есть ряд вопросов.

  1. А что, собственно, собой представляет объект conn? Имеется ввиду, что происходит на стороне базы, когда запрашивается соединение? Производится какая-то запись куда-то? Как это выглядит?

  2. Почему объект conn нельзя десериализовать, чтобы передавать его между процессами в мультипроцессинге?

  3. А что если твоё приложение и функция, которая открыла соединение упала, не закрыв соединение, что происходит с соединением на стороне базы?

  4. А если твой код выглядит примерно так (ниже). Т.е. в бесконечном цикле в отдельном процессе выполняется функция, тогда как закрывать соединение? Когда? А что будет, если программа вылетит?

    def функция(параметры):

    conn = psycopg2.connect(паратметры)

    cursor = conn.cursor()

    while True:

    cursor .execute(запрос)

    conn.commit()

    time.sleep(2)

    if __name__ == "__main__":

    mp_take_proxy_us_proxy_org = mp.Process(target=Фнукция, kwargs={параметры}, )

Вот пока вроде и весь пул вопросов. Подскажите, пожалуйста.

Правила сообщества

Публиковать могут пользователи с любым рейтингом. Однако!


Приветствуется:

• уважение к читателям и авторам

• конструктивность комментариев

• простота и информативность повествования

• тег python2 или python3, если актуально

• код публиковать в виде цитаты, либо ссылкой на специализированный сайт


Не рекомендуется:

• допускать оскорбления и провокации

• распространять вредоносное ПО

• просить решить вашу полноценную задачу за вас

• нарушать правила Пикабу

Темы

Политика

Теги

Популярные авторы

Сообщества

18+

Теги

Популярные авторы

Сообщества

Игры

Теги

Популярные авторы

Сообщества

Юмор

Теги

Популярные авторы

Сообщества

Отношения

Теги

Популярные авторы

Сообщества

Здоровье

Теги

Популярные авторы

Сообщества

Путешествия

Теги

Популярные авторы

Сообщества

Спорт

Теги

Популярные авторы

Сообщества

Хобби

Теги

Популярные авторы

Сообщества

Сервис

Теги

Популярные авторы

Сообщества

Природа

Теги

Популярные авторы

Сообщества

Бизнес

Теги

Популярные авторы

Сообщества

Транспорт

Теги

Популярные авторы

Сообщества

Общение

Теги

Популярные авторы

Сообщества

Юриспруденция

Теги

Популярные авторы

Сообщества

Наука

Теги

Популярные авторы

Сообщества

IT

Теги

Популярные авторы

Сообщества

Животные

Теги

Популярные авторы

Сообщества

Кино и сериалы

Теги

Популярные авторы

Сообщества

Экономика

Теги

Популярные авторы

Сообщества

Кулинария

Теги

Популярные авторы

Сообщества

История

Теги

Популярные авторы

Сообщества