Můj odhad je, že problém je se znakem procenta (%
) v textu dotazu. (Není to zástupný symbol bind variable v Django?) např. kdybychom použili proměnnou vazby, nevypadalo by to nějak takto?
SELECT 'foo' FROM DUAL WHERE 'a' = %(varname)s ;
Myslím, že možná Django skenuje váš text SQL a naráží na %w
a očekává se, že to bude proměnná vazby. Buď to, nebo běží sprintf
funkce stylu a setkání s %w
a očekáváte nahrazení tohoto zástupného symbolu hodnotou argumentu.
(Netestoval jsem; takže je to jen nápad, jen odhad.)
Jako tip na řešení možná zdvojnásobíte znaky procenta, stejně jako my získáme % literálů prostřednictvím sprintf:
query("SELECT ... ,'%%w') ...");
Pokud to nefunguje, pak je to možná znak zpětného lomítka, stejně jako znaky v regulárním výrazu:
query("SELECT ... ,'\%w') ...");
(Nebo možná budete muset zdvojnásobit zpětná lomítka. Jsou to pouze odhady založené na konvencích používaných jiným softwarem.)