带绑定字符串变量的Python cx_Oracle SQL

2024-09-27 00:12:48 发布

您现在位置:Python中文网/ 问答频道 /正文

我在使用Python为Oracle数据库创建SQL查询时遇到了一个问题。 我想绑定字符串变量,但它不起作用,你能告诉我我做错了什么吗? 这是我的代码:

import cx_Oracle

dokList = []

def LoadDatabase():
    conn = None
    cursor = None
    try:
        conn = cx_Oracle.connect("login", "password", "localhost")

        cursor = conn.cursor()

        query = "SELECT * FROM DOCUMENT WHERE DOC = :param"

        for doknumber in dokList:

            cursor.execute(query, {'doknr':doknumber})
            print(cursor.rowcount)

    except cx_Oracle.DatabaseError as err:
        print(err)
    finally:
        if cursor:
            cursor.close()
        if conn:
            conn.close()

def CheckData():

    with open('changedNamed.txt') as f:
        lines = f.readlines()

        for line in lines:
            dokList.append(line)

CheckData()
LoadDatabase()

cursor.rowcount的输出是0,但它应该是大于0的数字。在


Tags: innonefordefasconnquerycursor
1条回答
网友
1楼 · 发布于 2024-09-27 00:12:48

您使用字典({'doknr' : doknumber})作为参数,因此它是一个命名参数—即:paramneeds to match the key name。试试这个:

query = "SELECT * FROM DOCUMENT WHERE DOC = :doknr"
for doknumber in dokList:
        cursor.execute(query, {'doknr':doknumber})
        print(cursor.rowcount)

为了将来的故障排除,要检查参数是否正确传递,还可以尝试将查询更改为"select :param from dual"。在

相关问题 更多 >

    热门问题