を使用して Django から SQL Server とやり取りしていdjango-pyodbc
ます。に渡すストアド プロシージャの周りにオプションのパラメーターを使用してクエリを作成しようとしていますcursor.execute
。
SP 変数が POST 経由で送信された場合にのみ提供するように、クエリを手動で作成しています。
最終的に、次のクエリとパラメーターのタプルになります。
query = "EXEC spapi_patient_match @PCode = '?', @FName = '%?%', @LName = '%?%'"
params = (u'PC', u'FN', u'LN')
これらを execute 経由でカーソルに渡します。
cursor.execute(query, params)
エラーが発生しますnot enough arguments for format string
。これが Python 文字列での使用に関連しているかどうか疑問に思っている%
ので、代わりに次のクエリを使用してそれらを倍増させます。
query = "EXEC spapi_patient_match @PCode = '?', @FName = '%%?%%', @LName = '%%?%%'"
そして、このエラーで終わります:not all arguments converted during string formatting
また、ワイルドカードをストアド プロシージャの定義に移動しようとすることも検討しましたが、それはうまくいきませんでした。SO もお勧めできません。
編集:以下のMartijn Pietersが示唆するように、ワイルドカードを値のタプルに移動しました。これはおそらく正しいアプローチであることに同意しますが、これは問題を解決しておらず、依然としてエラーが発生しますnot all arguments converted during string formatting
。