Использование MySQL с dev_appserver (Google App Engine) и службой Google SQL

Я использую Google App Engine и Google SQL Service и хотел бы использовать опцию

dev_appserver.py --mysql_user = имя пользователя myapp

чтобы использовать локальную базу данных MySQL для целей разработки и SQL Service в среде prod.

У меня установлен MySQLdb и работает:

/usr/bin>>python
Python 2.7.2 (v2.7.2:8527427914a2, Jun 11 2011, 15:22:34) 
[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import MySQLdb
>>> 

Однако, когда я запускаю команду dev_appserver, я получаю следующую ошибку:

zipimporter('/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg', 'MySQLdb/')
ERROR    2011-09-12 09:34:53,541 rdbms_mysqldb.py:90] The rdbms API is not available because the MySQLdb library could not be loaded.

Я проверил, что MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg находится в этом месте (/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site -пакеты/) и что он доступен.

Любая идея, что может вызвать эту ошибку?

Полная информация о стеке приведена ниже для информации:

/Users/eddieboyd>>dev_appserver.py --debug --mysql_user=mysql  eddiehelloworld
Warning: You are using a Python runtime (2.7) that is more recent than the production runtime environment (2.5). Your application may use features that are not available in the production environment and may not work correctly when deployed to production.
INFO     2011-09-12 09:34:53,290 appengine_rpc.py:159] Server: appengine.google.com
INFO     2011-09-12 09:34:53,304 appcfg.py:449] Checking for updates to the SDK.
DEBUG    2011-09-12 09:34:53,305 appengine_rpc.py:364] Sending HTTPS request:
POST /api/updatecheck?release=1.5.3&timestamp=1311108376&api_versions=%5B%271%27%5D HTTPS/1.1
Host: appengine.google.com
X-appcfg-api-version: 1
Content-type: application/octet-stream
User-agent: appcfg_py/1.5.3 Darwin/10.8.0 Python/2.7.2.final.0


INFO     2011-09-12 09:34:53,465 appcfg.py:466] The SDK is up to date.
WARNING  2011-09-12 09:34:53,465 datastore_file_stub.py:512] Could not read datastore data from /var/folders/++/++71vE++6+0++4RjPqRgNE+0Eyo/-Tmp-/dev_appserver.datastore
INFO     2011-09-12 09:34:53,478 py_zipimport.py:148] zipimporter('/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg', 'MySQLdb/')
ERROR    2011-09-12 09:34:53,541 rdbms_mysqldb.py:90] The rdbms API is not available because the MySQLdb library could not be loaded.
ERROR    2011-09-12 09:34:53,541 dev_appserver_main.py:638] <type 'exceptions.NotImplementedError'>: Unable to find the MySQLdb library. Please see the SDK documentation for installation instructions.
DEBUG    2011-09-12 09:34:53,543 dev_appserver_main.py:640] Traceback (most recent call last):
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver_main.py", line 635, in main
    dev_appserver.SetupStubs(appinfo.application, **option_dict)
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/tools/dev_appserver.py", line 4668, in SetupStubs
    rdbms_mysqldb.connect(database='')
  File "/Applications/GoogleAppEngineLauncher.app/Contents/Resources/GoogleAppEngine-default.bundle/Contents/Resources/google_appengine/google/appengine/api/rdbms_mysqldb.py", line 96, in connect
    'Unable to find the MySQLdb library. Please see the SDK '
NotImplementedError: Unable to find the MySQLdb library. Please see the SDK documentation for installation instructions.

Ответ 1

Бедственное решение.

Я добавил

"import MySQLdb"

в dev_appserver.py.

Теперь он работает.

Ответ 2

Обеспечьте использование последней версии AppEngine SDK, которая в настоящее время является версией 1.6.2.

После этого установите пакет для поддержки python mysql: python-mysqldb.

Ответ 3

Возможно, ваша система не имеет требуемого модуля MySQL. На Fedora 16 64 бит я решил это, установив модуль python MySQL:

yum install MySQL-python