Python Multiline String girintiyi değiştirir

Sep 14 2020

Python ve Selenium ile bir Otomasyon üzerinde çalışıyorum. Web sitesindeki Metin Alanına bir SQL ve Java Script kodu bloğu yapıştırmam gerekiyor. Dizeleri göndermek için birçok yol kullandım, ancak girintiyi değiştirdi. Girintide herhangi bir değişiklik yapmadan kodları / dizeleri göndermenin bir yolu var mı? Aşağıdakilerin hepsini kullandım ve hiçbir şey işe yaramadı.

textwrap.dedent(prdrsql1)
textwrap.dedent(prdrsql1).lstrip()
(prdrsql1).lstrip()
(prdrsql1).strip()

Kod:

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""")

Çıktı:

Çıktı

Bu nedenle derleyici kodu derlemiyor ve bir Hata veriyor.

Girintiyi değiştirmeden veya en azından tüm satırları satırın başından başlatmadan bu SQL ve Java Script'i göndermem gerekiyor ( For Loops ve IF koşullarına sahip JS kodlarını göndermem gereken başka bir metin alanım var ) . Birisi lütfen girdilerinizi sağlayabilir mi?

Derleyici kodları yalnızca kod aşağıdaki gibiyse derler.

Teşekkürler Sanjay.

Yanıtlar

JaspreetKaur Sep 24 2020 at 06:45

Bu sorunun çözümü çok basit. Burada olduğu gibi çalışacağını umarak SQL Sorgusunu kopyaladınız. Python'da buradaki şey, girintiye duyarlı olmasıdır. yanlış girinti istenmeyen bir soruna neden olur. Şimdi, diğer yandan SQL Sorguları ve JavaScript Kodu, her ikisi de girintiye duyarlı değildir. Bunlar; (noktalı virgül) satırı kırmak için. Bu, her birini a ile ayıran bir satırda 300 komut belirtseniz bile; (noktalı virgül) komutlar güçlük çekmeden yürütülecektir. Ancak aynı şey python durumunda burada çalışmayacaktır.

Aşağıdaki kodu denerseniz, bu sizin için çalışacak ve beklenen sonuçları alacaksınız.

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")

Gerçekte kullanmadan önce bu değişkenin çıktısını SQL İstemcinizde yazdırmayı ve doğrulamayı deneyin.