TypeError:“ NoneType”对象不可迭代带有Oracle 19c的Python3

问题描述

Python 3.6.3 / Oracle 19c

以下脚本可以正常运行,直到命中upc_id,= cur.fetchone()。有人可以解释,可能是什么原因造成的?如果我在数据库中运行查询,则会得到结果(请参见下文)。在变量替换之后,是否有办法确切查看Oracle在运行什么?我怀疑绑定变量没有使用单引号,但是如何确认?

import datetime
import cx_Oracle
import db

line_item_sku = 'Y35FLPQ_034Y_M'
x = line_item_sku.split("_")

print (x)
print ("Split-list len: "+ str(len(x)))

if len(x) == 3:
    sku_with_dimension = False
elif len(x) == 4:
    sku_with_dimension = True

print ("SKU with dimension: " + str(sku_with_dimension))

style_id = x[0]
color_id = x[1]
size_id = x[2]
if sku_with_dimension:
    dimension_id = x[3]

print ("Style: "+style_id) 
print ("Color: "+color_id) 
print ("Size: "+size_id)

conn = db.connect('galo')
print ("Connected to: " + conn.version)

cur = conn.cursor()

upc_id = cur.var(str)
print ("Assigned return value")

if sku_with_dimension:
    sql = ("""      
            select upc_id                                                                       
            from sku
            where business_unit_id = '81'
            and style_id = :1
            and color_id = :2
            and identifier_id = 'EA'
            and size_id = :3
            and dimension_id = :4
        """)
    cur.execute(sql,(style_id,color_id,size_id,dimension_id))
else:
    sql = ("""      
            select upc_id                                                                       
            from sku
            where business_unit_id = '81'
            and style_id = :1
            and color_id = :2
            and identifier_id = 'EA'
            and size_id = :3                        
        """)
    cur.execute(sql,size_id))

print ("Determined which query to run")

upc_id,= cur.fetchone()
print (upc_id)

db.disconnect(conn,cur)

这是输出

'Y35FLPQ','034Y','M'] 
Split-list len: 3 
SKU with dimension: False 
Style: Y35FLPQ 
Color: 034Y 
Size: M 
Connected to: 19.0.0.0.0 
Assigned return value 
Determined which query to run 
Traceback (most recent call last):   
File "c:/Python/code/test.py",line 66,in <module>
    upc_id,= cur.fetchone() 
TypeError: 'nonetype' object is not iterable

如果我在数据库中运行查询,则会收到返回的结果:

enter image description here

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...