#python #mysql #amazon-rds
#python #mysql #amazon-rds
Вопрос:
Я ищу информацию о том, как обрабатывать мое подключение к AWS-RDS. Должен ли я открывать и закрывать соединение каждый раз при выполнении запроса? Должен ли я использовать лямбда-функцию и почему?
В настоящее время я настроил его так, чтобы соединение оставалось открытым, и оттуда обрабатываются выполнения. У меня нет закрытия соединения или тайм-аутов.
conn = pymysql.connect(db=dbname, host=host, port=port, user=user,
password=password)
cur = conn.cursor()
Затем я выполняю запросы по всему коду, подобные этому.
cur.execute("SELECT product, amount, total "
"FROM " table
" WHERE po_date BETWEEN %s AND %s",
(cur_month, next_month))
Ответ №1:
Это зависит от настроек вашего приложения.
Глобальное соединение — если вы создаете соединение на глобальном уровне, вы экономите на стоимости открытия соединения каждый раз, когда вам нужно получить доступ к базе данных, но вы используете больше памяти в базе данных, поскольку она поддерживает открытое соединение. Если приложение не закрывает соединение при выходе, база данных должна вручную отключить это незанятое соединение и отключить его. Вам нужно будет добавить логику повторных попыток в базу данных, чтобы убедиться, что соединение все еще работает.
Подключайтесь каждый раз — дополнительные накладные расходы на создание и закрытие соединения. Для открытия и закрытия соединения используется дополнительный процессор на стороне клиента и базы данных, но количество подключений будет ниже.
Что касается использования lambda, это полностью зависит от дизайна приложения. Но я бы сказал, да, используйте его, когда сможете!
Если вы хотите использовать lambda для подключения к базе данных, вам нужно будет создать пакет развертывания или уровень lambda для включения клиента SQL. Вот несколько ссылок с пошаговыми инструкциями по их созданию для python с помощью pymysql. При необходимости вы можете заменить библиотеку pymysql другим SQL-клиентом, используя эти же инструкции.
https://geektopia.tech/post.php?blogpost=Create_Lambda_Package_Python
https://geektopia.tech/post.php?blogpost=Create_Lambda_Layer_Python
Комментарии:
1. Спасибо! Я нигде не смог найти никакой документации или сообщений по этой проблеме. Раньше я использовал sqlite, и было много информации о том, как каждый раз открывать / закрывать соединение.