python - 如何在 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
解决方案
试试这个:
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
并将变量输入光标。
推荐阅读
- r - 创建没有年份的月份和日期序列
- javascript - 使用javascript在firebase Web中成功创建具有电子邮件和密码的用户时如何向屏幕提示消息
- c++ - 结构中的向量导致分段错误
- node.js - 无法使用 nodemailer node.js api 发送邮件?
- swift - 子视图控制器和边距
- python - *[ ... ] 语法是什么意思?
- android - Android:登录特定的 aspx 网站并从中检索数据
- swift - 尝试从 URL 文件 Swift 获取轨道长度时崩溃
- javascript - 如何在 JavaScript 中添加需要递归计算的新属性
- c# - 无法使用 Gmail smtp 从代码发送电子邮件