Python Multiline String cambia il rientro
Sto lavorando a un'automazione con Python e Selenium. Devo incollare un blocco di codici SQL e Java Script nell'area di testo del sito web. Ho usato molti modi per inviare le stringhe, ma cambia il rientro. C'è un modo per inviare i codici / stringhe senza modifiche al rientro? Ho usato tutto quanto sotto e niente ha funzionato,
textwrap.dedent(prdrsql1)
textwrap.dedent(prdrsql1).lstrip()
(prdrsql1).lstrip()
(prdrsql1).strip()
Codice:
prdrsql1 = ("""
SELECT DISTINCT CAST(q2.SubjectId AS varchar(32)) as SubjectId, q2.SubjectNum,
'A' as ItemOid,
q1.B as VisitId,
q1.[C] as VisitRepeatKey,
q1.[D] AS FormOid,
q1.E as FormRepeatKey,
'Y' as Data
FROM Table.A.ABC q2 with (NOLOCK)
Right Join (
select hashkey, SubjectNum,
(CASE WHEN C is null THEN 'SUBJECT' ELSE [D] END) AS
[D],
(CASE WHEN G is null THEN 'SUBJECT' ELSE [G] END) AS
[G],
FormOID, [DD], AB,ABC
from Table.A.ABC with (NOLOCK) where abc=123
) q1
on q1.abc = q2.qbc
AND q1.AA = 1 and AAA=1""")
Produzione:
È l'output
Per questo motivo il compilatore non compila il codice e restituisce un errore.
Devo inviare questi SQL e Java Script ( ho un altro campo di testo in cui devo inviare codici JS con condizioni For Loops e IF ) Codici senza alterare il rientro o almeno iniziare tutte le righe dall'inizio della riga . Qualcuno può fornire i tuoi input?
Il compilatore compila i codici solo se il codice è come di seguito.
Grazie, Sanjay.
Risposte
La soluzione a questo problema è molto semplice. Devi solo copiare e incollare la query SQL sperando che funzioni qui così com'è. La cosa qui in Python è che è sensibile al rientro. un trattino sbagliato causerebbe un problema non intenzionale. Ora, d'altra parte, le query SQL e il codice JavaScript, entrambi non sono sensibili al rientro. Questi dipendono da; (punto e virgola) per interrompere la riga. Ciò significa che anche se specifichi 300 comandi in una riga, separandoli ciascuno con un; (punto e virgola) i comandi verranno eseguiti senza problemi. Ma lo stesso non funzionerà qui in caso di Python.
Se provi il codice seguente, funzionerà per te e otterrai i risultati attesi.
prdrsql1 = ("SELECT DISTINCT CAST(q2.SubjectId AS varchar(32)) as SubjectId, q2.SubjectNum, 'A' as ItemOid, q1.B as VisitId, q1.[C] as VisitRepeatKey, q1.[D] AS FormOid, q1.E as FormRepeatKey, 'Y' as Data FROM Table.A.ABC q2 wit (NOLOCK) Right Join ( select hashkey, SubjectNum, (CASE WHEN C is null THEN 'SUBJECT' ELSE [D] END) AS [D], (CASE WHEN G is null THEN 'SUBJECT' ELSE [G] END) AS [G], FormOID, [DD], AB,ABCfrom Table.A.ABC with (NOLOCK) where abc=123) q1 on q1.abc = q2.qbc AND q1.AA = 1 and AAA=1")
Prova a stampare e verificare l'output di questa variabile nel tuo client SQL prima di utilizzarlo effettivamente.