2011-09-12 15 views
10

Sto usando Google App Engine e Google SQL Service, e vorrei utilizzare l'opzioneUtilizzando MySQL con dev_appserver (Google App Engine) e Google Servizio SQL

dev_appserver.py --mysql_user = nome utente myapp

per utilizzare un database MySQL locale per scopi di sviluppo e SQL Service in ambiente prod.

devo MySQLdb installate e funzionanti:

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

Tuttavia, quando faccio funzionare l'ordine dev_appserver, ottengo il seguente errore:

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. 

Ho verificato che il MySQL_python-1.2.3 -py2.7-macosx-10.6-intel.egg è nella posizione (/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/) e che è accessibile.

Qualche idea su cosa potrebbe causare questo errore?

stacktrace completa fornito qui sotto per informazioni: soluzione

/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. 
+0

ho trovato un tutorial passo-passo [qui] (http://howto.pui.ch/post/39245389801/tutorial -django-on-appengine-using-google-cloud-sql) –

risposta

3

poveri.

ho aggiunto

"import MySQLdb"

in dev_appserver.py.

Funziona ora.

+0

L'ho aggiunto al mio bash_profile. Questo ha risolto il tutto per la linea di comando, ma non per AppEngineLauncher: 'export DYLD_LIBRARY_PATH =/usr/local/mysql/lib' ho risolto facendo link simbolico: ' sudo ln -s/usr/local/mysql/lib/libmysqlclient.18.dylib/usr/lib/libmysqlclient.18.dylib' – blackjack75

1

Assicurarsi di utilizzare la versione più recente di AppEngine SDK che attualmente è la versione 1.6.2.

Dopo aver installato il pacchetto per il supporto mysql python: python-mysqldb.

0

Forse il tuo sistema non ha il modulo MySQL richiesto. Su Fedora 16 64 bit, ho risolto questo installando il modulo python MySQL:

yum install MySQL-python