Skip to Main Content

DevOps, CI/CD and Automation

Announcement

For appeals, questions and feedback about Oracle Forums, please email oracle-forums-moderators_us@oracle.com. Technical questions should be asked in the appropriate category. Thank you!

TypeError: 'NoneType' object is not iterable (Python3 with Oracle 19c)

epipkoAug 12 2020 — edited Aug 12 2020

The following script runs fine till it hits upc_id, = cur.fetchone().

Could someone explain, please what may cause it? If I run the query in database, I get the result back (see below).

Is there a way to see exactly what Oracle runs, after variable substitution?

I suspect single quotes are not in place for bind variables, but how can I confirm?

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 var")

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,(style_id, color_id, size_id))

print ("Determined which query to run")

upc_id, = cur.fetchone()

print (upc_id)

db.disconnect(conn, cur)

Here is the output

'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

If I run the query in database, I receive a result back:

enter image description here

Comments
Post Details
Added on Aug 12 2020
1 comment
2,382 views