Проверьте, занят ли соединение с базой данных, используя python

0
задан ttk203 19 March 2019 в 15:36
поделиться

1 ответ

Возможно, вы могли бы использовать состояние курсора, чтобы сказать вам, используется ли курсор. Допустим, у вас был следующий курсор:

new_cursor = new_connection.cursor()
cursor.execute(new_query)

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

if (new_cursor.rowcount == -1):
    another_new_cursor = new_connection.cursor()
    ...

Конечно, все это действительно говорит вам о том, что курсор еще ничего не выполнил с момента последнего закрытия. Он может указывать на выполненный курсор (и, следовательно, на соединение, которое было закрыто), или он может указывать на курсор, который был только что создан или присоединен к соединению. Другой вариант - использовать цикл try / catch, что-то вроде:

try:
    another_new_cursor = new_connection.cursor()
except ConnectionError?: //not actually sure which error would go here but you get the idea.
    print("this connection is busy.")

Конечно, вы, вероятно, не хотите получать спам с печатными сообщениями, но вы можете делать что угодно в этом кроме блокировки, ожидания в течение 5 секунд, ожидания передачи другой переменной, ожидания ввода пользователя и т. д. Если вы ограничены PEP 249, вам придется многое делать с нуля. Есть ли причина, по которой вы не можете использовать внешние библиотеки?

РЕДАКТИРОВАТЬ: Если вы хотите выйти за пределы PEP 249, вот кое-что, что может работать, но это может не подходить для ваших целей. Если вы используете библиотеку Python mysql, вы можете воспользоваться методом is_connected.

new_connection = mysql.connector.connect(host='myhost',
                         database='myDB',
                         user='me',
                         password='myPassword')

...stuff happens...

if (new_connection.is_connected()):
    pass
else:
    another_new_cursor = new_connection.cursor()
    ...
0
ответ дан Jeremiah 19 March 2019 в 15:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: