2014-01-08 1 views
4

Я пытаюсь создать приложение с Django на GAE и CloudSQL в качестве db.
Я использовал это google developers link и this link для настройки dev-среды. Я не могу подключиться к локальному mysql db.Django в Google App Engine с облачным SQL в среде dev

Вот настройка DATABASE, которую я пытаюсь использовать.

if (os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine') or 
os.getenv('SETTINGS_MODE') == 'prod'): 
DATABASES = { 
    'default': { 
     'ENGINE': 'google.appengine.ext.django.backends.rdbms', 
     'INSTANCE': 'instance:appid', 
     'NAME': 'database_name', 
    } 
} 
else: 
    DATABASES = { 
     'default': { 
      'ENGINE': 'django.db.backends.mysql', 
      'USER': 'root', 
      'PASSWORD': '', 
      'HOST': 'localhost', 
      'NAME': 'database_name', 
     } 
    } 

Мое приложение отлично работает на производственной GAE, но когда я пытаюсь запустить приложение на Dev окр, я получаю эту ошибку

File "/home/sandeep/Downloads/google_appengine/google/appengine/tools/dev_appserver_import_hook.py", line 635, in __init__ 
raise IOError(errno.EACCES, 'file not accessible', filename) 
IOError: [Errno 13] file not accessible: '/usr/local/lib/python2.7/site-packages/MySQL_python-1.2.4-py2.7-linux-x86_64.egg' 

полный стек-след в http://pastebin.com/ZXHv0FPQ

Я установил «python-mysql», загрузив источник и выполнив «python setup.py install»

Редактировать 1
Я также попытался добавить MySQLdb в библиотеку.

- name: MySQLdb 
    version: "latest" 

Получил эту ошибку

the library "MySQLdb" is not supported 
    in "/home/sandeep/development/UploadImage/src/app.yaml", line 14, column 1 

EDIT 2
Джанго SyncDB работает отлично с этим настройками и Джанго умеет создавать таблицы для me.But, когда я пытаюсь запустить через «dev_appserver.py», тогда я получил вышеописанную стек.
Я могу получить доступ к облачной среде SQLSQL.

+0

Вы установили библиотеку Python MySQL? вам также нужно включить его в файл app.yaml, см. https://developers.google.com/appengine/docs/python/cloud-sql/ –

+0

Да, я установил python-mysql, используя источник. Мне нужно добавить его в PYTHONPATH? – Sandeep

+0

Если я изменю движок на «google.appengine.ext.django.backends.rdbms», тогда он сможет получить доступ к экземпляру liveSQLSQL. Я не могу настроить django с локальным mysql. – Sandeep

ответ

0

Это должно работать, как упомянуто here. Я не вижу ничего плохого в этом фрагменте кода.

import os 
if os.getenv('SERVER_SOFTWARE', '').startswith('Google App Engine'): 
    # Running on production App Engine, so use a Google Cloud SQL database. 
    DATABASES = { 
     'default': { 
      'ENGINE': 'django.db.backends.mysql', 
      'HOST': '/cloudsql/your-project-id:your-instance-name', 
      'NAME': 'django_test', 
      'USER': 'root', 
     } 
    } 
elif os.getenv('SETTINGS_MODE') == 'prod': 
    # Running in development, but want to access the Google Cloud SQL instance 
    # in production. 
    DATABASES = { 
     'default': { 
      'ENGINE': 'google.appengine.ext.django.backends.rdbms', 
      'INSTANCE': 'your-project-id:your-instance-name', 
      'NAME': 'django_test', 
      'USER': 'root', 
     } 
    } 
else: 
    # Running in development, so use a local MySQL database. 
    DATABASES = { 
     'default': { 
      'ENGINE': 'django.db.backends.mysql', 
      'NAME': 'django_test', 
      'USER': 'root', 
      'PASSWORD': 'root', 
     } 
    } 

Я также использую Google App Engine с cloudsql в Джанго и вот те параметры, которые я использую для развертывания и развития на местном уровне, и она работает просто отлично !!

Настройки для развертывания в GAE

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'HOST': '/cloudsql/instance:appid', 
     'NAME': 'name_of_database', 
     'USER': 'mysql_user', 
    } 
} 

Настройки для местного развития с App Engine SDK

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.mysql', 
     'NAME': 'name_of_database', 
     'USER': 'mysql_user', 
     'PASSWORD': 'pwd', 
     'HOST': 'ip_address_of_cloudsql_instance', # Empty for localhost through domain sockets or '127.0.0.1' for localhost through TCP. 
    } 
} 
+0

Я попытался использовать django.db.backends.mysql для локальной настройки, но он не работает. http://pastebin.com/ZXHv0FPQ. Я чувствую, что модуль python-mysql недоступен в среде GAE. Если я пытаюсь запустить приложение django, то для меня работает «django.db.backends.mysql». – Sandeep

+0

@Sandeep есть ошибка ввода-вывода 'IOError: [Errno 13] файл недоступен: '/usr/local/lib/python2.7/site-packages/MySQL_python-1.2.4-py2.7-linux-x86_64 .egg'' Можете ли вы проверить разрешение на этот файл для пользователя, запускающего этот проект? –

+0

-rwxr-xr-x 1 корень штата 112570 8 янв 06:06 /usr/local/lib/python2.7/site-packages/MySQL_python-1.2.4-py2.7-linux-x86_64.egg – Sandeep