Запросы SELECT mysql.connector выполняются одновременно или последовательно? - PullRequest
0 голосов
/ 16 сентября 2018

В настоящее время я использую mysql.connector в проекте Python Flask, и после того, как пользователи введут свою информацию, будет выполнен следующий запрос:

"SELECT first, last, email, {} FROM {} WHERE {} <= {} AND ispaired IS NULL".format(key, db, class_data[key], key)

Это создаст проблему, если этот запрос будет выполнен в2 потока одновременно, и вернул одну и ту же строку в обоих потоках.Мне было интересно, есть ли способ предотвратить одновременное выполнение запросов SELECT mysql или это уже было поведение по умолчанию mysql.connector?Для получения дополнительной информации все запросы mysql.connector выполняются после проверки подлинности с одинаковыми учетными данными.

1 Ответ

0 голосов
/ 17 сентября 2018

Трудно сказать из вашего описания, но если вы используете Flask, вы, скорее всего, используете (или будете использовать в производстве) несколько процессов, и у вас, вероятно, есть пул соединений (т.е. несколько соединений) в каждомпроцесс.Поэтому, пока каждое соединение выполняет запросы последовательно, этот запрос может быть запущен одновременно несколькими подключениями одновременно.

Чтобы приложение не получало одну и ту же строку в одно и то же время при обработке разных запросов, вам следует использоватьтранзакции и методы, такие как SELECT FOR UPDATE.Точное решение зависит от вашего конкретного случая использования.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...