私の推測では、問題はパーセント記号(%
)にあります )クエリテキスト内。 (それはDjangoのバインド変数プレースホルダーではありませんか?)例:バインド変数を使用する場合、次のようになりませんか?
SELECT 'foo' FROM DUAL WHERE 'a' = %(varname)s ;
DjangoがSQLテキストをスキャンしていて、%w
に遭遇しているのではないかと思います。 そしてそれがバインド変数であることを期待しています。それか、sprintf
を実行しています スタイル関数、および%w
に遭遇 そのプレースホルダーを引数値に置き換えることを期待しています。
(私はテストしていません。したがって、これは単なるアイデアであり、単なる推測です。)
回避策の推測として、パーセント記号を2倍にすることができます。これは、sprintfを介して%リテラルを取得するのと同じです:
query("SELECT ... ,'%%w') ...");
それが機能しない場合は、バックスラッシュ文字である可能性があります。これは、正規表現で文字をエスケープするのと同じです。
query("SELECT ... ,'\%w') ...");
(または、円記号を2倍にする必要がある場合があります。これらは、他のソフトウェアで使用されている規則に基づく推測にすぎません。)