J'essaie d'utiliser in-query en python. Mais j'ai différentes exceptions à cela.
La première tentative a été :
query = """select keyword from keyword where keyword in %(ids)s and country = %(country)s""" cursor.execute(query, {'ids': tuple(ids), 'country': country})
Il donne l'erreur suivante : Failedprocessing pyformat-parameters; Python“tuple”无法转换为 MySQL 类型
La deuxième tentative était :
str_keywords = ",".join(tuple("'" + str(i) + "'" for i in ids)) query = """select keyword from keyword where keyword in (%s) and country = %s""" cursor.execute(query, (str_keywords, country))
Cela ne donne pas d'erreur mais ne fonctionne pas.
Des suggestions ?
Vous pouvez utiliser des chaînes f avec des tuples :
Sortie :
Essayez ce qui suit :
L'objectif ici est pour l'espace réservé
ids
中的每个值构建一个in (%s, %s, %s, ..., %s)
子句,其中包含一个%s
.Il y a quelques points à noter :
IN
Il peut y avoir une limite supérieure au nombre d'espaces réservés dans une clause. Voir Limites conditionnelles MySQL IN pour plus de détails.ids
为空,则此查询无效。您可能已经有一些逻辑来处理空ids
列表的情况,或者您的代码可能永远不会在ids
est vide. Sinon, vous devrez travailler sur l'affaire.