Skip to content

oracledb.defaults.fetch_lobs changes how integers are fetched #15

@doerwalter

Description

@doerwalter

I have the following table

create table oracledbtest(testint integer);

and I've inserted one record via

insert into oracledbtest values (1);

With this, the following Python script

import oracledb
for fetch_lobs in (False, True):
	oracledb.defaults.fetch_lobs = fetch_lobs
	db = oracledb.connect("user/pwd@db", config_dir='/Users/walter/oracle/instantclient_12_2/network/admin')
	c = db.cursor()
	data = c.execute("select * from oracledbtest").fetchall()
	print(f"{fetch_lobs=}: {data=}")

outputs

fetch_lobs=False: data=[(1.0,)]
fetch_lobs=True: data=[(1,)]

i.e. with oracledb.defaults.fetch_lobs = False integers are fetched as floats, but with oracledb.defaults.fetch_lobs = True they are fetched as ints.

IMHO they should always be fetched as ints.

Versions from

import sys, platform, oracledb

print(f"{platform.platform()=}")
print(f"{sys.maxsize > 2**32=}")
print(f"{platform.python_version()=}")
print(f"{oracledb.__version__=}")

are

platform.platform()='macOS-12.4-x86_64-i386-64bit'
sys.maxsize > 2**32=True
platform.python_version()='3.10.4'
oracledb.__version__='1.0.0'

The database is an Oracle XE 21.0.0.0.0

Metadata

Metadata

Assignees

No one assigned

    Labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions