Saya cuba menggunakan pertanyaan dalam dalam python. Tetapi saya mempunyai pengecualian yang berbeza untuk ini.
Percubaan pertama ialah:
query = """select keyword from keyword where keyword in %(ids)s and country = %(country)s""" cursor.execute(query, {'ids': tuple(ids), 'country': country})
Ia memberikan ralat berikut: Failedprocessing pyformat-parameters; Python“tuple”无法转换为 MySQL 类型
Percubaan kedua ialah:
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))
Ini tidak memberikan ralat tetapi tidak berfungsi.
Ada cadangan?
Anda boleh menggunakan tali f dengan tupel:
Keluaran:
Cuba yang berikut:
Matlamat di sini adalah untuk
ids
中的每个值构建一个in (%s, %s, %s, ..., %s)
子句,其中包含一个%s
pemegang tempat.Ada beberapa perkara yang perlu diberi perhatian:
IN
Mungkin terdapat had atas bilangan ruang letak dalam klausa. Lihat MySQL DALAM Had Bersyarat untuk butiran.ids
为空,则此查询无效。您可能已经有一些逻辑来处理空ids
列表的情况,或者您的代码可能永远不会在ids
kosong. Jika tidak, anda perlu bekerja pada kes itu.