Уведомления

Группа в Telegram: @pythonsu

#1 Ноя. 15, 2017 14:06:33

dmis18
Зарегистрирован: 2017-11-15
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Django Rest

Всем добрый день! Я новичок в джанге. У меня есть база 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',
    }

Получаю пустой models.py.

к слову, когда делаю просто коннект в консоли питона
 db = cx_Oracle.connect('FORTEST', 'FORTEST', '12.12.12.212:1354/IOSSDB')

конектит и я свободно могу работать с базой, но для фреймворка(ExtJs в моем случае) насколько я понял, нужно получить модель, чтобы потом запрос на роутер отправлять.

Собственно вопрос в том, как мне быть? с джанго знаком не давно по этому буду рад любой помощи



Потомственный системный администратор.
Очное и заочное (по IP-адресу) лечение компьютеров.
Гадание по портам (COM, LPT, USB).
Верну утраченную ОС, сниму вирусную порчу и венец безИнтернетия.
Снимаю с программ сглаз правообладателей, выполню отворот RIAA, поиск потерянных файлов по имиджу жесткого диска.

Обращаться в ПМ.

Отредактировано dmis18 (Ноя. 15, 2017 14:07:37)

Офлайн

#2 Ноя. 15, 2017 20:06:55

Vladimirv
Зарегистрирован: 2013-03-22
Сообщения: 108
Репутация: +  7  -
Профиль   Отправить e-mail  

Django Rest

Думаю, что файл models.py ищешь не в той директории, раз нет ошибок. У меня с sqlite3 работает. Попробуй изменить имя файла модели на любое и запусти поиск) Вообще файл models.py должен быть рядом с manage.py, в твоём случае.
Или выполни просто:
python manage.py inspectdb –database=master
вывод в консоль, дальше скопируй.

Офлайн

#3 Ноя. 16, 2017 10:04:32

dmis18
Зарегистрирован: 2017-11-15
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Django Rest

Vladimirv
Думаю, что файл models.py ищешь не в той директории, раз нет ошибок. У меня с sqlite3 работает. Попробуй изменить имя файла модели на любое и запусти поиск) Вообще файл models.py должен быть рядом с manage.py, в твоём случае. Или выполни просто:python manage.py inspectdb –database=masterвывод в консоль, дальше скопируй.

Тут такая штука, оказалось inspectdb не работает с Oracle. И тут же и вопрос, вот у меня есть модель в models.py, я пытаюсь ее синхронизировать через makemigrations получаю ошибку от оракла (ORA-01031: insufficient privileges).

Окей, как я понимаю он говорит, что у меня нет прав. Но как тогда мне получить обьекты таблицы из базы, не прибегая модели.. В послдествии мне эти данные нужно серилизовать для Rest фреймворка. Есть идеи у кого?



Потомственный системный администратор.
Очное и заочное (по IP-адресу) лечение компьютеров.
Гадание по портам (COM, LPT, USB).
Верну утраченную ОС, сниму вирусную порчу и венец безИнтернетия.
Снимаю с программ сглаз правообладателей, выполню отворот RIAA, поиск потерянных файлов по имиджу жесткого диска.

Обращаться в ПМ.

Отредактировано dmis18 (Ноя. 16, 2017 10:04:56)

Офлайн

#4 Ноя. 16, 2017 10:14:46

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Django Rest

dmis18
Окей, как я понимаю он говорит, что у меня нет прав.
Ну так дайте права юзеру, которого прописали в настройках DATABASES



Офлайн

#5 Ноя. 16, 2017 10:22:39

dmis18
Зарегистрирован: 2017-11-15
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Django Rest

Тога вопрос, почему же когда я обращаюсь к базе через консоль питона, вот так:

   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

То я получаю ответ и все данные по запросу выводит в консоль. Или тут права не имеют значения?



Потомственный системный администратор.
Очное и заочное (по IP-адресу) лечение компьютеров.
Гадание по портам (COM, LPT, USB).
Верну утраченную ОС, сниму вирусную порчу и венец безИнтернетия.
Снимаю с программ сглаз правообладателей, выполню отворот RIAA, поиск потерянных файлов по имиджу жесткого диска.

Обращаться в ПМ.

Офлайн

#6 Ноя. 16, 2017 10:26:38

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Django Rest

dmis18
Покажите settings.py



Офлайн

#7 Ноя. 16, 2017 10:28:48

dmis18
Зарегистрирован: 2017-11-15
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Django Rest

 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/'



Потомственный системный администратор.
Очное и заочное (по IP-адресу) лечение компьютеров.
Гадание по портам (COM, LPT, USB).
Верну утраченную ОС, сниму вирусную порчу и венец безИнтернетия.
Снимаю с программ сглаз правообладателей, выполню отворот RIAA, поиск потерянных файлов по имиджу жесткого диска.

Обращаться в ПМ.

Офлайн

#8 Ноя. 16, 2017 11:04:02

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Django Rest

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)

Офлайн

#9 Ноя. 16, 2017 11:53:23

dmis18
Зарегистрирован: 2017-11-15
Сообщения: 16
Репутация: +  0  -
Профиль   Отправить e-mail  

Django Rest

Я конечно извиняюсь, но я не совсем понимаю способ применения логгера. И куда мне его вставить?



Потомственный системный администратор.
Очное и заочное (по IP-адресу) лечение компьютеров.
Гадание по портам (COM, LPT, USB).
Верну утраченную ОС, сниму вирусную порчу и венец безИнтернетия.
Снимаю с программ сглаз правообладателей, выполню отворот RIAA, поиск потерянных файлов по имиджу жесткого диска.

Обращаться в ПМ.

Офлайн

#10 Ноя. 16, 2017 12:06:54

FishHook
От:
Зарегистрирован: 2011-01-08
Сообщения: 8312
Репутация: +  568  -
Профиль   Отправить e-mail  

Офлайн

Board footer

Модераторировать

Powered by DjangoBB

Lo-Fi Version