Browse Source

flask: Use PyMySQL on PyPy

INADA Naoki 9 years ago
parent
commit
afb6640f37

+ 1 - 1
frameworks/Python/bottle/requirements-pypy.txt

@@ -2,5 +2,5 @@ bottle==0.12.8
 bottle-sqlalchemy==0.4.2
 SQLAlchemy==1.0.4
 gunicorn==19.3.0
-PyMySQL==0.6.6
+PyMySQL==0.6.7
 tornado==4.2

+ 5 - 8
frameworks/Python/flask/app.py

@@ -8,26 +8,23 @@ import sys
 
 import flask
 from flask import Flask, request, render_template, make_response, jsonify
-from flask.ext.sqlalchemy import SQLAlchemy
+from flask_sqlalchemy import SQLAlchemy
 from sqlalchemy import create_engine
 from sqlalchemy.ext import baked
 
 if sys.version_info[0] == 3:
     xrange = range
 
-DBHOST = os.environ.get('DBHOST', 'localhost')
+_is_pypy = hasattr(sys, 'pypy_version_info')
 
-try:
-    import MySQLdb
-    mysql_schema = "mysql:"
-except ImportError:
-    mysql_schema = "mysql+pymysql:"
+DBDRIVER = 'mysql+pymysql' if _is_pypy else 'mysql'  # mysqlclient is slow on PyPy
+DBHOST = os.environ.get('DBHOST', 'localhost')
 
 
 # setup
 
 app = Flask(__name__)
-app.config['SQLALCHEMY_DATABASE_URI'] = mysql_schema + '//benchmarkdbuser:benchmarkdbpass@%s:3306/hello_world?charset=utf8' % DBHOST
+app.config['SQLALCHEMY_DATABASE_URI'] = DBDRIVER + '//benchmarkdbuser:benchmarkdbpass@%s:3306/hello_world?charset=utf8' % DBHOST
 app.config['JSONIFY_PRETTYPRINT_REGULAR'] = False
 db = SQLAlchemy(app)
 dbraw_engine = create_engine(app.config['SQLALCHEMY_DATABASE_URI'], connect_args={'autocommit': True}, pool_reset_on_return=None)

+ 1 - 1
frameworks/Python/flask/requirements-pypy.txt

@@ -3,6 +3,6 @@ Werkzeug==0.10.4
 flask==0.10.1
 SQLAlchemy==1.0.4
 Flask-SQLAlchemy==2.0
-mysqlclient==1.3.6
+PyMySQL==0.6.7
 gunicorn==19.3.0
 tornado==4.2