]> git.ipfire.org Git - thirdparty/sqlalchemy/sqlalchemy.git/commitdiff
Makes gaerdbms for App Engine use local MySQL server when running under dev_appserver2.
authorBrett Slatkin <brett@haxor.com>
Sat, 8 Jun 2013 07:10:26 +0000 (00:10 -0700)
committerBrett Slatkin <brett@haxor.com>
Sat, 8 Jun 2013 07:10:26 +0000 (00:10 -0700)
lib/sqlalchemy/dialects/mysql/gaerdbms.py

index ad0ce763857b20daaf55e6dd9602b52c0511faeb..0c08b1483b51cb49aeb820c3b7bb37decfd00db0 100644 (file)
@@ -26,11 +26,17 @@ default.
 
 """
 
+import os
+
 from .mysqldb import MySQLDialect_mysqldb
 from ...pool import NullPool
 import re
 
 
+def _IsDevEnvironment():
+    return os.environ.get('SERVER_SOFTWARE', '').startswith('Development/')
+
+
 class MySQLDialect_gaerdbms(MySQLDialect_mysqldb):
 
     @classmethod
@@ -43,7 +49,10 @@ class MySQLDialect_gaerdbms(MySQLDialect_mysqldb):
         # see also http://stackoverflow.com/q/14224679/34549
         from google.appengine.api import apiproxy_stub_map
 
-        if apiproxy_stub_map.apiproxy.GetStub('rdbms'):
+        if _IsDevEnvironment():
+            from google.appengine.api import rdbms_mysqldb
+            return rdbms_mysqldb
+        elif apiproxy_stub_map.apiproxy.GetStub('rdbms'):
             from google.storage.speckle.python.api import rdbms_apiproxy
             return rdbms_apiproxy
         else:
@@ -57,11 +66,11 @@ class MySQLDialect_gaerdbms(MySQLDialect_mysqldb):
 
     def create_connect_args(self, url):
         opts = url.translate_connect_args()
-        # 'dsn' and 'instance' are because we are skipping
-        # the traditional google.api.rdbms wrapper
-
-        opts['dsn'] = ''
-        opts['instance'] = url.query['instance']
+        if not _IsDevEnvironment():
+            # 'dsn' and 'instance' are because we are skipping
+            # the traditional google.api.rdbms wrapper
+            opts['dsn'] = ''
+            opts['instance'] = url.query['instance']
         return [], opts
 
     def _extract_error_code(self, exception):