I have the following code:
data = [1,2,None,4,5,6]
sql = """
SELECT :1 AS ID, :2 AS pkey, :3 AS issuenum FROM dual UNION ALL
SELECT :4 AS ID, :5 AS pkey, :6 AS issuenum FROM dual
"""
cur = con.cursor()
cur.execute(sql, data)
data = cur.fetchall()
I gen an error DatabaseError: ORA-01790: expression must have same datatype as corresponding expression
If i run it with data = [1,2,3,4,5,6]
, it all passes.
From the error it seems, it doesn't like the missing value. My question is, how do I bid the statement so that I can select NULL value, where the None is in the list?
This is a SQL issue and nothing specific to the driver. You can fix this issue by issuing the following statement instead:
This will ensure that the data type is number for both rows. In Python the value
None
has no type so the driver assumes the value is a string.You can also work around this issue in the driver by issusing the following command prior to executing the SQL:
This forces the driver to treat all of the bind values as number, including the value
None
.