Djangoで生のSQLクエリを作成すると、一部のクエリで_ip.magicが文字列に取り込まれ、文字列の書式設定でパラメータが十分でないか多すぎるため、例外が発生します。_ip.magicは生のSQLクエリになります。それを避ける方法は?
サンプルコードは、最小限のセットに縮小、それでも「魔法」を生成した。(私は成功したSQLを生成したい、このクエリを実行するという意味ではありません。)
> ids = (1, 4)
> curr = 3
> q = User.objects.raw(u"""
SELECT
1
WHERE
a=%s and b=%s AND a.user_id = %s
""", params=(ids, ids, curr))
> print q.query.sql
... a = _ip.magic("s and b=%s AND a.user_id = %s")
を
_ip.magic
はなぜですか?クエリによっては、単一のパラメータをラップすることもあります。どのようにそれを取り除く?
編集:ソリューションはautomagic
をオフにすることでした:
>>> _ip.options['automagic'] = 0