Django: «аргумент типа int не является итеративным» в oracle / base.py в _rowfactory - PullRequest
0 голосов
/ 04 сентября 2018

Я пытаюсь подключить свое приложение Django к базе данных Oracle, но выдача запроса приводит к исключению:

TypeError: argument of type 'int' is not iterable

Местоположение исключения: /opt/isep/venv/lib/python3.4/site-packages/django/db/backends/oracle/base.py в _rowfactory, строка 560

def _rowfactory(row, cursor):
# Cast numeric values as the appropriate Python type based upon the
# cursor description, and convert strings to unicode.
casted = []
for value, desc in zip(row, cursor.description):
    if value is not None and desc[1] is Database.NUMBER:
        precision = desc[4] or 0
        scale = desc[5] or 0
        if scale == -127:
            if precision == 0:
                # NUMBER column: decimal-precision floating point
                # This will normally be an integer from a sequence,
                # but it could be a decimal value.
                if '.' in value:
                    value = decimal.Decimal(value)
                else:
                    value = int(value)
            else:
                # FLOAT column: binary-precision floating point.
                # This comes from FloatField columns.
                value = float(value)
        elif precision > 0:
            # NUMBER(p,s) column: decimal-precision fixed point.
            # This comes from IntField and DecimalField columns.
            if scale == 0:
                value = int(value)
            else:
                value = decimal.Decimal(value)
        elif '.' in value:
            # No type information. This normally comes from a
            # mathematical expression in the SELECT list. Guess int
            # or Decimal based on whether it has a decimal point.
            value = decimal.Decimal(value)
        else:
            value = int(value)
    elif desc[1] in (Database.STRING, Database.FIXED_CHAR,
                     Database.LONG_STRING):
        value = to_unicode(value)
    casted.append(value)
return tuple(casted)

Ошибка в строке: if '.' in value:, потому что value = 0.

Я использую: Python 3.4, Django 1.11, cx_Oracle 6.0.

Как я могу решить это?

1 Ответ

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

Хорошо, я удалил свой венв, а затем создал еще один. На этот раз я установил Django 1.11.15 и cx_Oracle 6.0. Кажется, все работает нормально. Исключение ушло.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...