python - 如何使用 Python 编写查询?

标签 python sql oracle cx-oracle

我正在尝试将变量传递给查询。我找不到办法做到这一点。

我要求两个输入,并且我正在尝试使用这两个输入进行查询。

c.execute('SELECT DESCRIPTION,PART_REV 
             FROM ENG_PART_REVISION_REFERENCE 
            WHERE PART_NO = \'Part_No\' and Rev_no = \'Rev_no\' and STATE = \'Released\' ')

Part_noRev_no 是输入。

import docx
import cx_Oracle
from docx.enum.text import WD_ALIGN_PARAGRAPH
from docx import Document
import os


try:
    doc = Document()
    Part_No = input("Please enter part_no: ")
    Rev_no = input("Please, the Rev_no: ")
    dsn_tns = cx_Oracle.makedsn('XXXXXXXXXXXXXXXXX', 'XXX', service_name='XXXXXX') #PLease I remove the correct data from this string connection.
    conn = cx_Oracle.connect(user=r'lora1app', password='lora1app', dsn=dsn_tns)
    c = conn.cursor()
    c.execute('SELECT DESCRIPTION,PART_REV FROM ENG_PART_REVISION_REFERENCE WHERE PART_NO = \'Part_No\' and Rev_no = \'Rev_no\' and STATE = \'Released\' ')


    doc.add_picture(os.path.join(os.path.dirname(__file__), 'logo.PNG'))
    doc.add_heading('Part Change Notification', 0)
    doc.add_paragraph('Part Number: '+ ' '+Part_No)
    doc.add_paragraph('Rev_no: '+' '+Rev_no)
    doc.save(os.path.join(os.path.dirname(__file__),'testing.docx'))

    for result in c:
        print (result)

    c.close()
    conn.close()



    input("Your Part_No: " +Part_No+" has been update it on the word document.")

except BaseException:
    import sys
    print(sys.exc_info()[0])
    import traceback
    print(traceback.format_exc())
finally:
    print("Document was updated it")
    input()

最佳答案

您需要使用冒号作为绑定(bind)变量

v_sql:="SELECT DESCRIPTION,PART_REV 
          FROM ENG_PART_REVISION_REFERENCE 
         WHERE PART_NO = :Part_No 
           AND REV_NO = :Rev_No 
           AND STATE = 'Released' "
c.execute(v_sql, (Part_No, Rev_No))
  • 元组中的顺序应与 变量。按顺序,Part_No 是第一个,Rev_No 是第二个。
  • 名称不必相同,而我这样使用它们是因为 代码中的变量名称。

关于python - 如何使用 Python 编写查询?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54675951/

相关文章:

oracle - 如何从oracle 11g回收站中删除表?

python - 如何在 RabbitMQ 中创建延迟队列?

python - 如何将 MySQL timestamp(6) 读入 pandas?

php - 困难的 SQL 查询语法

mysql - 获取与 2 个不同表的一对多关系的计数

java - 重复选择或使用 IN 子句,哪个更快?

perl - 如何在 OSX Snow Leopard 10.6 上安装 perl DBD::Oracle

python - Python 中对元素进行分组的 list 方法

python - 将多维张量中的一个值映射到另一个值

sql - T-SQL 中 SELECT 和 SET 有什么区别