Форум сайта python.su
Всем добрый день! Я новичок в джанге. У меня есть база Oracle на сервере. У меня есть фреймворк от Sencha ExtJs и все это я хочу законектить через Rest Framework, так вот, одним из условий насколько я понял является сериализация модели в моей базе, но я не понимаю как мне получить модель(models.py), пытаюсь обратиться к базе так:
python manage.py inspectdb --database=master>models.py
'master': { 'ENGINE': 'django.db.backends.oracle', 'NAME': 'IOSSDB', 'USER': 'FORTEST', 'PASSWORD': 'FORTEST', 'HOST': '12.12.12.212', 'PORT': '1354', }
db = cx_Oracle.connect('FORTEST', 'FORTEST', '12.12.12.212:1354/IOSSDB')
Отредактировано dmis18 (Ноя. 15, 2017 14:07:37)
Офлайн
Думаю, что файл models.py ищешь не в той директории, раз нет ошибок. У меня с sqlite3 работает. Попробуй изменить имя файла модели на любое и запусти поиск) Вообще файл models.py должен быть рядом с manage.py, в твоём случае.
Или выполни просто:
python manage.py inspectdb –database=master
вывод в консоль, дальше скопируй.
Офлайн
Vladimirv
Думаю, что файл models.py ищешь не в той директории, раз нет ошибок. У меня с sqlite3 работает. Попробуй изменить имя файла модели на любое и запусти поиск) Вообще файл models.py должен быть рядом с manage.py, в твоём случае. Или выполни просто:python manage.py inspectdb –database=masterвывод в консоль, дальше скопируй.
Отредактировано dmis18 (Ноя. 16, 2017 10:04:56)
Офлайн
dmis18Ну так дайте права юзеру, которого прописали в настройках DATABASES
Окей, как я понимаю он говорит, что у меня нет прав.
Офлайн
Тога вопрос, почему же когда я обращаюсь к базе через консоль питона, вот так:
db = cx_Oracle.connect('FORTEST', 'FORTEST', '12.12.12.212:1354/IOSSDB') mycurs = db.cursor() mycurs.execute("select DISTINCT BSC from I_HUAWEI_GERAN15.CELLSTATS_CFG") result = mycurs.fetchall() for (BSC) in result: print BSC
Офлайн
dmis18
Покажите settings.py
Офлайн
import os BASE_DIR = os.path.dirname(os.path.dirname(os.path.abspath(__file__))) # See https://docs.djangoproject.com/en/1.11/howto/deployment/checklist/ SECRET_KEY = '2)w+e6gildy-m0^!hs-c=#w-22k!5jx$(t7$!-wx$5rgwt5t4e' DEBUG = True ALLOWED_HOSTS = [] INSTALLED_APPS = [ 'django.contrib.auth', 'django.contrib.contenttypes', 'django.contrib.sessions', 'django.contrib.sites', 'rest_framework', 'django_proj.app.comb_pan' ] MIDDLEWARE = [ 'django.middleware.security.SecurityMiddleware', 'django.contrib.sessions.middleware.SessionMiddleware', 'django.middleware.common.CommonMiddleware', 'django.middleware.csrf.CsrfViewMiddleware', 'django.contrib.auth.middleware.AuthenticationMiddleware', 'django.contrib.messages.middleware.MessageMiddleware', 'django.middleware.clickjacking.XFrameOptionsMiddleware', ] ROOT_URLCONF = 'django_proj.urls' TEMPLATES = [ { 'BACKEND': 'django.template.backends.django.DjangoTemplates', 'DIRS': [os.path.join(BASE_DIR, 'django_proj/app/comb_pan/migrations/app/comb_pan/templates')] , 'APP_DIRS': True, 'OPTIONS': { 'context_processors': [ 'django.template.context_processors.debug', 'django.template.context_processors.request', 'django.contrib.auth.context_processors.auth', 'django.contrib.messages.context_processors.messages', ], }, }, ] WSGI_APPLICATION = 'django_proj.wsgi.application' DATABASES = { 'default': { 'ENGINE': 'django.db.backends.oracle', 'NAME': 'IOSSDB', 'USER': 'FORTEST', 'PASSWORD': 'FORTEST', 'HOST': '12.12.12.212', 'PORT': '1354', }, 'standart': { 'ENGINE': 'django.db.backends.sqlite3', 'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), } } AUTH_PASSWORD_VALIDATORS = [ { 'NAME': 'django.contrib.auth.password_validation.UserAttributeSimilarityValidator', }, { 'NAME': 'django.contrib.auth.password_validation.MinimumLengthValidator', }, { 'NAME': 'django.contrib.auth.password_validation.CommonPasswordValidator', }, { 'NAME': 'django.contrib.auth.password_validation.NumericPasswordValidator', }, ] LANGUAGE_CODE = 'en-us' TIME_ZONE = 'UTC' USE_I18N = True USE_L10N = True USE_TZ = True STATIC_URL = '/static/'
Офлайн
dmis18
Тут вроде все правильно.
Итак makemigrations наверняка требует других привилегий, чем селект “select DISTINCT BSC from I_HUAWE….”. Как минимум, эта команда пишет в БД и делает хитрые запросы, чтобы получить текущую схему. Могу посоветовать залоггировать запросы и посмотреть на каком именно cx_Oracle падает.
логгер
как-то так
LOGGING = { 'version': 1, 'disable_existing_loggers': False, 'filters': { 'require_debug_false': { '()': 'django.utils.log.RequireDebugFalse' } }, 'formatters': { 'standard': { 'format': "[%(asctime)s] %(levelname)s [%(name)s:%(lineno)s] %(message)s", 'datefmt': "%d/%b/%Y %H:%M:%S" }, }, 'handlers': { 'null': { 'level': 'DEBUG', 'class': 'logging.NullHandler', }, 'console': { 'level': 'DEBUG', 'class': 'logging.StreamHandler', }, }, 'loggers': { 'django.request': { 'handlers': ['mail_admins'], 'level': 'ERROR', 'propagate': True, } } } #Логгер для сбора запросов LOGGING['loggers']['django.db'] = { 'handlers': ['console'], 'level': 'DEBUG', }
Отредактировано FishHook (Ноя. 16, 2017 11:04:47)
Офлайн
Я конечно извиняюсь, но я не совсем понимаю способ применения логгера. И куда мне его вставить?
Офлайн
dmis18
В settings.py
https://docs.djangoproject.com/en/1.11/topics/logging/
Офлайн