Как получить последний sql errno для соединения pymysql?

0

Я использую pymysql для взаимодействия с базой данных MySQL и внедрения пула соединений. Теперь проблема в том, как я могу вырезать сломанные соединения, когда они возвращаются в пул? Я не хочу выдавать команду ping или 'select 1', чтобы проверять проверку каждый раз, когда вы получаете соединение из пула, так как это приведет к снижению производительности.

Поэтому я задаюсь вопросом, есть ли способ или флаг, который я могу проверить, когда соединение возвращается в пул: выполняет ли последний выполненный sql исключение и что errno? Затем я могу проверить errno, чтобы узнать, не сломано ли соединение и повторно подключиться.

До сих пор одним из способов достижения этого является введение дополнительного аргумента методу close() для указания errno, если исключение произошло, когда клиент возвращает соединение.

errno = None
try:
    conn = pool.get_connection()
    conn.execute(sql)
exception pymysql.Error, e:
    errno = e.args[0]
finally:
    conn.close(errno)

Но я бы больше хотел, чтобы клиентский код поддерживал совместимость с другими пулами, более изящными способами?

Теги:
pymysql
connection-pooling

1 ответ

0

Наконец, я реализую специальный класс подключения к базе данных и вводим член errno для записи последнего номера ошибки, выполненного sql. Затем каждый раз, когда вы возвращаете соединение с пулом, я сначала проверяю значение errno, и если он равен 2006 или 2013 году, я запускаю это сломанное соединение.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню