@xx_RuBiCoN_xx

Как оптимизировать запрос к БД и вывод результатов?

Есть база данных, в столбце operatorVariable есть операторы(operator1, operator2, operator3 и так до 5) и в столбце user_id их айдишки. Мне нужно сделать вывод переменных operator1 = user_id(этого оператора). Получился вот такой код:
def supportConnect(bot, message):
    mydb = mysql.connector.connect(host = hostBot, user = userBot, password = passwordBot, database = databaseBot)
    cursor = mydb.cursor()
    cursor.execute("SELECT user_id FROM operators WHERE operatorVariable = 'operator1'")
    result = cursor.fetchone()
    if result is not None:
        operator1 = result[0]
    cursor.execute("SELECT user_id FROM operators WHERE operatorVariable = 'operator2'")
    result = cursor.fetchone()
    if result is not None:
        operator2 = result[0]
    cursor.execute("SELECT user_id FROM operators WHERE operatorVariable = 'operator3'")
    result = cursor.fetchone()
    if result is not None:
        operator3 = result[0]
    cursor.execute("SELECT user_id FROM operators WHERE operatorVariable = 'operator4'")
    result = cursor.fetchone()
    if result is not None:
        operator4 = result[0]
    cursor.execute("SELECT user_id FROM operators WHERE operatorVariable = 'operator5'")
    result = cursor.fetchone()
    if result is not None:
        operator5 = result[0]
    mydb.close()


Сейчас это работает нормально, но если предстваить, что этих операторов будет 100? Как это реализовать более компактно? Как можно вывести в нужную переменную нужный айдишник? Думал вывести result(operator1) = operatorVariable, a operatorVariable = result(user_id). Но тогда operator1 не равен user_id...
  • Вопрос задан
  • 25 просмотров
Решения вопроса 1
RimMirK
@RimMirK
Вроде человек. Вроде учусь. Вроде пайтону
все через скл

таблица

| user_id | op_id |
+---------+-------+
|     123 | op1   |
|    4324 | op2   |
|   34234 | op3   |



SELECT user_id from test group by op_id
| user_id |
+---------+
|     123 |
|    4324 |
|   34234 |


потом в питоне делаем дикт например

ops = {f'op_{i}': user_id[0] for i, user_id in enumerate(cur.fetchall(), 1)}


и в результате получаем такое: {'op_1': 123, 'op_2': 132123, 'op_3': 23434}
Ответ написан
Комментировать
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

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