Я пытаюсь получить довольно сложный запрос из mysql - у меня нормально работает соединение, и я могу успешно завершить запрос, когда я жестко закодировал значения.
Я бы хотел сделать одно из значений переменной Python - я следую методу, который я нашел здесь: Как использовать переменные в выражении SQL в Python? , как кажется из приведенного примера использованияпочти так же, как у меня.
Используемая мной функция исполнения mysql отличается от решенной проблемы, и я не могу понять, куда поместить переменную python в вызове execute.
Мой код:
targetPUID = "fmt/123"
cur.execute("""
(
SELECT `PUID`,`DROID_V`,`SIG_V`,`SPEED`,
COUNT(distinct IF(sourcelist.hasExtension=1,NAME,NULL)) as Ext,
COUNT(distinct IF(sourcelist.hasExtension=0,NAME,NULL)) as NoExt,
COUNT(distinct NAME) as `All`
FROM sourcelist, main_small
WHERE sourcelist.SourcePUID ="%s" AND main_small.NAME = sourcelist.SourceFileName
GROUP BY `PUID`,`DROID_V`,`SIG_V`,`SPEED` ORDER BY `DROID_V` ASC, `SIG_V`
)
""")
Я знаю, что мне нужно разместить ссылку на мою переменную targetPUID
, чтобы связать ее с %s
в запросе.
___________________ ИСПРАВЛЕНО ___________________
ОК, все заработало:
cur.execute("""
(
SELECT `PUID`,`DROID_V`,`SIG_V`,`SPEED`,
COUNT(distinct IF(sourcelist.hasExtension=1,NAME,NULL)) as Ext,
COUNT(distinct IF(sourcelist.hasExtension=0,NAME,NULL)) as NoExt,
COUNT(distinct NAME) as `All`
FROM sourcelist, main_small
WHERE sourcelist.SourcePUID =%s AND main_small.NAME = sourcelist.SourceFileName
GROUP BY `PUID`,`DROID_V`,`SIG_V`,`SPEED` ORDER BY `DROID_V` ASC, `SIG_V`
)
""",targetPUID)
и
targetPUID = "x-fmt/409"
У меня недостаточно представителей, чтобы добавить исправление,Спасибо за прочтение.