2016-03-18 15 views
19

Sto usando PyCharm e ho un errore in questa istruzione SQL:Come posso fare in modo che PyCharm riconosca i segnaposto nelle istruzioni SQL?

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

L'ispezione sintassi del codice dice:

<expression> expected, got '%' 

C'è un modo per disattivare questo messaggio di errore? In altre parole, come posso fare in modo che PyCharm riconosca i segnaposto nelle istruzioni SQL?

Modifica

Ecco la mia soluzione:

Per %(id)s e %s bisogna avuto %\((\w+)\)s e %s in Settings/Preferences | Tools | Database | User parameters e selezionare All languages non solo SQL

+0

'Impostazioni/Preferenze | Strumenti | Database | Parametri utente - puoi aggiungere un modello di parametri personalizzato lì. Assicurati anche che le opzioni appropriate "Abilita ..." siano abilitate. – LazyOne

+0

Grazie! Ho provato questo modello ma non funziona: '\% \ (([^ $ \ (\)] *) \) \ s' Hai un'idea per favore? –

+1

Penso che quelle parentesi '()' nel vero segnaposto '% (id) s' siano ciò che lo rende in pausa. Ho provato poche cose e nessuna ha funzionato. In questo momento potrei suggerire di presentare il ticket di supporto ufficiale all'indirizzo https://intellij-support.jetbrains.com/hc/en-us/requests/new – LazyOne

risposta

22

È questo SQL in una console SQL , o in una stringa in uno script Python? Ho avuto questo stesso problema e l'ho risolto selezionando la casella sopra l'elenco di modelli, etichettato come "Abilita in string letterali con SQL injection". Se lo stai facendo in una finestra della console SQL, seleziona la prima casella.

Come osserva @LazyOne, vai a Settings/Preferences > Tools > Database > User Parameters e vedrete due caselle in alto:
Enable in console and SQL files
Enable in string literals with SQL injection

Mentre è possibile aggiungere i propri schemi personalizzati, credo che il modello che corrisponde a questo parametro la sintassi (per me, i parametri per psycopg2 per l'uso in Postgres) è pronta all'uso in Pycharm, l'ultimo della lista.

Vedi qui per riferimento:
https://www.jetbrains.com/help/pycharm/2016.1/user-parameters.html

0

Oltre a @ risposta di Nate (built-in regex %\((\w+)\)s lavora per PostgreSQL), sono riuscito a ottenere questo lavoro solo tramite riordino dei modelli e bersaglio mobile regex all'inizio dell'elenco.

Si potrebbe anche provare a disabilitare altre regole e vedere se questo aiuta.