首页 > 解决方案 > 如何在 python 中使用不同的 SQL 字符串行而不在我的代码中出现错误?

问题描述

我试图在我的 python 代码中运行一个非常复杂的 SQL。但是,代码有多行。当我将 sql 移动到下一行时,它看起来会产生错误。怎么会有多条线?如何让 python 认为下一行仍然是 SQL 代码?

我正在尝试使用 python 查询

def NewPartNumber(v_sql,Part_No,Rev_no):
    dsn_tns = cx_Oracle.makedsn('XXXXXXXXXXX', 'XXX', service_name='XXXXXX')
    conn = cx_Oracle.connect(user=r'XXX', password='XXXXX', dsn=dsn_tns)
    c = conn.cursor()


#####Here is my SQL###########Python do not like when I break in from#####


    w_sql =('SELECT (SUBSTR((SELECT (SUBSTR((SELECT DESCRIPTION FROM lora1app.ENG_PART_REVISION_REFERENCE WHERE part_rev ='OBS' and part_no ='XXXXX') ,
    (instr((SELECT DESCRIPTION FROM lora1app.ENG_PART_REVISION_REFERENCE WHERE part_rev ='OBS' and part_no ='XXXXX') ,'USE',1)+4),
    length((SELECT DESCRIPTION FROM lora1app.ENG_PART_REVISION_REFERENCE WHERE part_rev ='OBS' and part_no ='XXXXX') 
    ))) from dual),1,6) )FROM DUAL')

####      I can make to work if I have a single huge string    ################




for result in c:
        if result ==' ':
            print("No data was found")
        else:
            print(result)

    return result

标签: python

解决方案


试试这个:

w_sql =''' ('SELECT (SUBSTR((SELECT (SUBSTR((SELECT DESCRIPTION FROM lora1app.ENG_PART_REVISION_REFERENCE WHERE part_rev ='OBS' and part_no ='XXXXX') ,
    (instr((SELECT DESCRIPTION FROM lora1app.ENG_PART_REVISION_REFERENCE WHERE part_rev ='OBS' and part_no ='XXXXX') ,'USE',1)+4),
    length((SELECT DESCRIPTION FROM lora1app.ENG_PART_REVISION_REFERENCE WHERE part_rev ='OBS' and part_no ='XXXXX') 
    ))) from dual),1,6) )FROM DUAL') '''

如果您需要填写 where 子句,您需要添加 a%s并将变量输入光标。


推荐阅读