Saltar al contenido

dar parámetro (lista o array) en el operador – python, sql

Ya no necesitas buscar más en otras páginas porque estás al sitio necesario, contamos con la solución que necesitas recibir pero sin problemas.

Solución:

La idea es tener una consulta como esta:

cursor.execute("SELECT ... IN (%s, %s, %s)", (1, 2, 3))

donde cada uno %s será sustituido por elementos en su lista. Para construir esto string consulta que puedes hacer:

placeholders= ', '.join(['%s']*len(article_ids))  # "%s, %s, %s, ... %s"
query = 'SELECT name FROM table WHERE article_id IN ()'.format(placeholders)

finalmente

cursor.execute(query, tuple(article_ids))

Para Python3 puedes usar

article_ids = [1,2,3,4,5,6]
sql_list = str(tuple([key for key in article_ids])).replace(',)', ')')
query ="""
    SELECT id FROM table WHERE article_id IN sql_list
""".format(sql_list=sql_list)

Resultando en

>>> print(query)

    SELECT id FROM table WHERE article_id IN (1, 2, 3, 4, 5, 6)

que puedes alimentar

cursor.execute(query)

Esto también funciona para article_ids de solo 1 valor (donde tuple genera (1,)).

También funciona para matrices de cadenas:

article_titles = ['some', 'article titles']

Resultando en

    SELECT id FROM table WHERE article_title IN ('some', 'article titles')

Si piensas que te ha resultado de provecho nuestro post, agradeceríamos que lo compartas con el resto entusiastas de la programación y nos ayudes a dar difusión a nuestra información.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *