Невозможно соединить Django 2.0.7 с oracle 12c, используя cx_oracle 6.4 в python 3.7 - PullRequest
0 голосов
/ 06 июля 2018

У меня проблема с подключением Orace 12c с Django 2

использованная команда: python manage.py migrate

ниже - сообщение об ошибке, которое я получаю

Operations to perform:
Apply all migrations: admin, auth, contenttypes, sessions
Running migrations:
Applying contenttypes.0002_remove_content_type_name...Traceback (most recent call last):
File "C:\Users\Administrator.IP22\Envs\dell\lib\site-packages\django\db\backends\utils.py", line 85, in _execute
return self.cursor.execute(sql, params)
File "C:\Users\Administrator.IP22\Envs\dell\lib\site- packages\django\db\backends\oracle\base.py", line 497, in execute
return self.cursor.execute(query, self._param_generator(params))
cx_Oracle.ProgrammingError: positional and named binds cannot be intermixed`

нажмите здесь, чтобы увидеть скриншот ошибки

Следующий код используется в settings.py для базы данных

DATABASES = {
'default': {
    'ENGINE': 'django.db.backends.oracle',
    'NAME': 'orcl',
    'USER': 'C##',
    'PASSWORD': 'Oracle_1',
    'HOST': '',
    'PORT': '',
}
}

вот код для файла 0002_remove_content_type_name.py:

from django.db import migrations, models


def add_legacy_name(apps, schema_editor):
ContentType = apps.get_model('contenttypes', 'ContentType')
for ct in ContentType.objects.all():
    try:
        ct.name = apps.get_model(ct.app_label, ct.model)._meta.object_name
    except LookupError:
        ct.name = ct.model
    ct.save()


class Migration(migrations.Migration):

dependencies = [
    ('contenttypes', '0001_initial'),
]

operations = [
    migrations.AlterModelOptions(
        name='contenttype',
        options={'verbose_name': 'content type', 'verbose_name_plural': 'content types'},
    ),
    migrations.AlterField(
        model_name='contenttype',
        name='name',
        field=models.CharField(max_length=100, null=True),
    ),
    migrations.RunPython(
        migrations.RunPython.noop,
        add_legacy_name,
        hints={'model_name': 'contenttype'},
    ),
    migrations.RemoveField(
        model_name='contenttype',
        name='name',
    ),
]

1 Ответ

0 голосов
/ 07 июля 2018

Эта проблема связана с ошибкой , введенной в cx_Oracle 6.4. Если вы можете собрать из исходного кода, вы можете получить последний код, в котором исправлена ​​ошибка. Или вы можете подождать, пока выйдет cx_Oracle 6.4.1 (вероятно, через несколько дней).

...