Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Using MySQL with dev_appserver (Google App Engine) and Google SQL Service

I am using Google App Engine and Google SQL Service, and would like to use the option

dev_appserver.py --mysql_user=username myapp

in order to use a local MySQL database for development purposes, and SQL Service in prod environment.

I have MySQLdb installed and working:

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

However, when I run the dev_appserver command, I get the following error:

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.

I have verified that the MySQL_python-1.2.3-py2.7-macosx-10.6-intel.egg is in the location (/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/) and that it is accessible.

Any idea what might be causing this error?

Full stacktrace provided below for information:

/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.
like image 403
Eddie B Avatar asked Sep 12 '11 09:09

Eddie B


People also ask

Can I use MySQL on Google Cloud?

You can use Cloud SQL, Google Cloud Marketplace, or manually install MySQL on Compute Engine. Cloud SQL offers MySQL as a web service. You can use Cloud SQL to host your MySQL database in Google's cloud, and let Google Cloud handle administrative duties like replication, patch management, and database management.

How do I connect SQL instance and VM instance in GCP?

Click on the name of the newly created Cloud SQL Instance then Click the Connections tab. Click Add network and enter the static IP address of your VM instance created earlier, then Click Done and Save.


2 Answers

Poor man's solution.

I added

"import MySQLdb"

in dev_appserver.py.

It works now.

like image 197
seungjin Avatar answered Oct 19 '22 01:10

seungjin


Ensure to use the latest version of the AppEngine SDK which currently is the version 1.6.2.

After that install the package for python mysql support: python-mysqldb.

like image 1
Mark Avatar answered Oct 19 '22 02:10

Mark