20

私は PyCharm を使用していますが、次の SQL ステートメントにエラーがあります。

SELECT * FROM table WHERE id= %(id)s

コード構文検査は次のように述べています。

<expression> expected, got '%'

このエラー メッセージを無効にする方法はありますか? つまり、PyCharm に SQL ステートメントのプレースホルダーを認識させるにはどうすればよいでしょうか?

編集

これが私の解決策です:

For %(id)sand %syou have to have %\((\w+)\)sand %sin Settings/Preferences | Tools | Database | User parametersand select All languagesSQLだけではありません

4

2 に答える 2

23

これは SQL コンソールの SQL ですか、それとも Python スクリプトの文字列ですか? これと同じ問題があり、パターンのリストの上にある「SQL インジェクションを使用して文字列リテラルで有効にする」というラベルの付いたボックスをチェックして解決しました。これを SQL コンソール ウィンドウで実行している場合は、最初のボックスをオンにします。

@LazyOne が指摘しているように、に移動するSettings/Preferences > Tools > Database > User Parametersと、上部に 2 つのチェックボックスが表示されます。
Enable in console and SQL files
Enable in string literals with SQL injection

独自のカスタム パターンを追加できますが、このパラメーター構文 (私にとっては、Postgres で使用するための psycopg2 のパラメーター) に一致するパターンは、リストの最後の Pycharm ですぐに使用できると思います。

参考までにこちらをご覧ください:
https://www.jetbrains.com/help/pycharm/2016.1/user-parameters.html

于 2016-04-01T01:44:57.350 に答える
0

@Nateの回答(組み込みの正規表現%\((\w+)\)sはPostgreSQLで機能します)に加えて、パターンを並べ替えてターゲット正規表現をリストの一番上に移動することによってのみ、この作業を行うことができました。

他のルールを無効にして、それが役立つかどうかを確認することもできます。

于 2016-08-26T15:16:37.490 に答える