mysqlからかなり複雑なクエリを取り戻そうとしています。接続が正常に機能していて、値をハードコードすると正常にクエリを完了できます。クエリにPython変数を挿入する
私はpython変数の値の1つを作りたいと思っています。ここで見つけた方法に従っています:How to use variables in SQL statement in Python?リストされたusecaseは私のものとほとんど同じようです。
私が使用しているmysqlの実行関数は、解決された問題とは異なり、実行呼び出しにPython変数をどこに配置するのかわかりません。
マイコード:
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`
)
""")
私は、クエリで%s
と連携するために私の変数targetPUID
への参照を配置する必要があります知っています。
___________________FIXED___________________
OK、それが働いて得た:私はまだ修正を追加するのに十分な担当者を持っていない
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"
を。読んでくれてありがとう。
私はそれを試してみましたが、空リストを返す - '()'ありがとうございます。 –
'%s'をクエリの' targetPUID'の値に置き換えて、SQLアプリケーションで手動で実行して、クエリが機能するかどうかを確認してください。 – enderskill
Yupe、このPythonメソッドを使って手動で実装したときはうまく動作するので、変数aspectを知っています。 –