Возвращать пустую строку вместо Oracle NULL / Python None при извлечении данных из Oracle с помощью cx_Oracle - PullRequest
0 голосов
/ 03 сентября 2018

Когда я извлекаю данные с помощью модуля cx_Oracle, вместо Oracle NULL возвращается None. На данный момент я использую функцию ниже, чтобы преобразовать None в пустую строку.

def xstr(s):
    if s is None:
        return ''
    return str(s)

Есть ли способ заставить модуль cx_Oracle возвращать пустую строку вместо None?

1 Ответ

0 голосов
/ 04 сентября 2018

Вы можете использовать обработчик типа выхода и преобразователь out для преобразования таким образом. Как то так.

def OutConverter(value):
    if value is None:
        return ''
    return value

def OutputTypeHandler(cursor, name, defaultType, size, precision, scale):
    if defaultType in (cx_Oracle.STRING, cx_Oracle.FIXED_CHAR):
        return cursor.var(str, size, cursor.arraysize, outconverter=OutConverter)

connection.outputtypehandler = OutputTypeHandler

Приведенный выше код преобразует все пустые строки, возвращаемые из базы данных, в пустые строки.

...