簡體   English   中英

在三引號中使用變量(Python)

[英]Using variables in Triple Quotes (Python)

我試圖像這樣在sql查詢中輸入2個變量:

query = """
Select Distinct
    sp.NAME,
    sp.STUDY,
    sp.DISEASE_ONTOLOGY_TERM,
    sv.GENE,
    sv.CDS_EFFECT,
    sv.PROTEIN_EFFECT,
    rep.STATUS,
    sv.FRACTION_READS,
    sv.DEPTH,
    cvmship.REMOVED
  From
    SPECIMEN sp
    inner join CURATION_MANAGER cm on (cm.SPECIMEN_ID = sp.SPECIMEN_ID)
    inner join CURATION_VERSION cv on (cv.CURATION_VERSION_ID = cm.LATEST_VERSION_ID)
    inner join CURATION_VERSION_MEMBERSHIP cvmship on (cvmship.VERSION_ID = cv.CURATION_VERSION_ID)
    inner join CURATION_VERSION_MEMBER cvmer on (cvmer.CURATION_VERSION_MEMBER_ID = cvmship.MEMBER_ID)
    inner join REPORTABLE rep on (rep.CURATION_VERSION_MEMBER_ID = cvmer.CURATION_VERSION_MEMBER_ID)
    inner join SHORT_VARIANT sv on (sv.REPORTABLE_ID = rep.CURATION_VERSION_MEMBER_ID)
    inner join (
      Select
        sp.SPECIMEN_ID,
        cqr.STATUS
      From
        SPECIMEN sp
        inner join CURATION_MANAGER cm on (cm.SPECIMEN_ID = sp.SPECIMEN_ID)
        inner join CURATION_VERSION cv on (cv.CURATION_VERSION_ID = cm.LATEST_VERSION_ID)
        inner join CURATION_VERSION_MEMBERSHIP cvmship on (cvmship.VERSION_ID = cv.CURATION_VERSION_ID)
        inner join CURATION_VERSION_MEMBER cvmer on (cvmer.CURATION_VERSION_MEMBER_ID = cvmship.MEMBER_ID)
        inner join CURATION_QC_RESULT cqr on (cqr.CURATION_VERSION_MEMBER_ID = cvmer.CURATION_VERSION_MEMBER_ID)
    ) cqr on (cqr.SPECIMEN_ID = sp.SPECIMEN_ID)
  Where sp.ASSIGNED_INDEX is not null
    AND sp.NAME like 'TRF%'
    AND LENGTH(sp.NAME) = 12
    AND cv.STATUS = 'final'
    AND (cqr.STATUS = 'Pass' or cqr.STATUS = 'Qualified')
    AND sp.STUDY like '%CLINICAL%'
    AND sv.GENE = '%s'
    AND sv.PROTEIN_EFFECT = '%s'

    order by sp.name desc
""" % (gene, proEff)

當我運行此腳本時,我得到:

  File "fetchDEVDB.py", line 57, in <module>
    """ % (gene, proEff)
ValueError: unsupported format character ''' (0x27) at index 1481

我當時在想也許它試圖將%解釋為一種格式字符,但是我嘗試使用%%將%s括起來,但出現了同樣的錯誤。 有任何想法嗎?

謝謝

您需要'%'-用LIKE表達式引用,而不是格式字符:

...AND sp.NAME like 'TRF%%'
...
...AND sp.STUDY like '%%CLINICAL%%'

在這

AND sp.NAME like 'TRF%'
AND LENGTH(sp.NAME) = 12
AND cv.STATUS = 'final'
AND (cqr.STATUS = 'Pass' or cqr.STATUS = 'Qualified')
AND sp.STUDY like '%CLINICAL%'
AND sv.GENE = '%s'
AND sv.PROTEIN_EFFECT = '%s'

我看到兩種無效的格式:

TRF%
%CLINICAL%

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM