Упростите SQL, чтобы выполнить запрос только для каждого исполнителя - PullRequest
0 голосов
/ 20 апреля 2020

Это запрос:

for artist_id in artist_ids:
    params = {
         "id": artist_id
    }
    sql = """SELECT * FROM artists WHERE id = :id"""
    db_value = db.session.execute(sql, params).fetchall()

Я пытаюсь переписать код без запроса, вызвав все идентификаторы исполнителей в одном запросе. Как это сделать?

Ответы [ 2 ]

0 голосов
/ 20 апреля 2020

Вы можете преобразовать свой список в кортеж.

artist_ids = [1, 2, 3, 4, 5]
sql = """SELECT * FROM artists WHERE id IN {}""".format(tuple(artist_ids))
0 голосов
/ 20 апреля 2020

Вы можете преобразовать строку в правильный текст с помощью функции join, а затем вставить ее в строку запроса SQL:

artist_ids_parameter = ",".join([str(i) for i in artist_ids])
sql = f"""SELECT * FROM artists WHERE id IN ({artist_ids_parameter})"""
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...