2016-03-18 14 views
19

Używam pycharm i mam błąd na tej SQL:Jak sprawić, że PyCharm rozpoznaje symbole zastępcze w instrukcjach SQL?

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

Kontrola składni kodu mówi:

<expression> expected, got '%' 

Czy istnieje sposób, aby wyłączyć ten komunikat o błędzie? Innymi słowy, w jaki sposób mogę sprawić, że PyCharm rozpoznaje symbole zastępcze w instrukcjach SQL?

Edit

Oto moje rozwiązanie:

Dla %(id)s i %s trzeba miał %\((\w+)\)s i %s w Settings/Preferences | Tools | Database | User parameters wybierz All languages nie tylko SQL

+0

'Ustawienia/Preferencje | Narzędzia | Baza danych | Parametry użytkownika "- możesz tam dodać własny wzorzec parametrów. Upewnij się również, że włączone są odpowiednie opcje 'Włącz ...'. – LazyOne

+0

Dzięki! Próbowałem tego wzoru, ale to nie działa: '\% \ (([^ $ \ (\)] *) \) \ s' Masz pomysł? –

+1

Myślę, że te nawiasy '()' w rzeczywistych symbol zastępczy '% (id) s' są, co czyni go przerwy. Próbowałem kilku rzeczy i żaden z nich nie działał. W tej chwili mogę tylko zaproponować przesłanie oficjalnego biletu wsparcia na https://intellij-support.jetbrains.com/hc/en-us/requests/new – LazyOne

Odpowiedz

22

Czy to SQL w konsoli SQL lub w łańcuchu w skrypcie Pythona? Miałem ten sam problem i rozwiązałem go, zaznaczając pole powyżej listy wzorców, oznaczone "Włącz w literałach ciągów z iniekcją SQL". Jeśli robisz to w oknie konsoli SQL, zaznacz pierwsze pole.

Jak zauważa @LazyOne, przejdź do Settings/Preferences > Tools > Database > User Parameters i zobaczysz dwa pola wyboru u góry:
Enable in console and SQL files
Enable in string literals with SQL injection

Chociaż można dodać swoje własne wzorach, wierzę wzór, który pasuje do tego parametru Składnia (dla mnie parametry dla psycopg2 do użycia w PostgreSzu) jest nieaktualna w Pycharmie, ostatnim na liście.

Patrz tutaj dla odniesienia:
https://www.jetbrains.com/help/pycharm/2016.1/user-parameters.html

0

Oprócz @ odpowiedź Nate'a (wbudowany regex %\((\w+)\)s pracuje dla PostgreSQL), udało mi się dostać tę pracę tylko poprzez reorganizację wzory i ruchomy cel wyrejestruj na początek listy.

Można również spróbować wyłączyć inne reguły i sprawdzić, czy to pomaga.

Powiązane problemy