python - instalar - La conexión local MySQLdb falla con AttributeError para paramstyle cuando se ejecuta el servidor de desarrollo GAE
mysql connector python (1)
Esto significa que el módulo MySQLdb
falta y no se pudo importar. GAE SDK no viene con la biblioteca de cliente MySQLdb; instalar MySQLdb ( como se indica en la documentación del SDK ):
venv/bin/pip install mysql-python
o use su administrador de paquetes del sistema operativo para instalar MySQLdb en su sistema python.
El error se debe al módulo Google google.appengine.api.rdbms_mysqldb
, que actúa como un apéndice, y no tiene un atributo paramstyle
cuando falla la import MySQLdb
. Se proporciona una función stub connect()
que generará una excepción más útil, pero debido a una desafortunada interacción con SQLAlchemy, el error es mucho menos informativo.
Estoy construyendo una aplicación GAE Flask con Flask-Alchemy, contra Cloud SQL, y dev_appserver
ejecutando dev_appserver
para probar la aplicación a medida que la construyo.
Sin embargo, si configuro SQLALCHEMY_DATABASE_URI
en una SQLALCHEMY_DATABASE_URI
mysql+gaerdbms:///appname?instance=instanceid
, obtengo el siguiente rastreo al intentar llamar a db.create_all()
:
Traceback (most recent call last):
# earlier lines omitted for brevity
File "/Project/app/foo.bar/foo/bar/admin/__init__.py", line 26, in init_db
db.create_all()
File "/Project/app/distlib/flask_sqlalchemy/__init__.py", line 856, in create_all
self._execute_for_all_tables(app, bind, ''create_all'')
File "/Project/app/distlib/flask_sqlalchemy/__init__.py", line 848, in _execute_for_all_tables
op(bind=self.get_engine(app, bind), tables=tables)
File "/Project/app/distlib/flask_sqlalchemy/__init__.py", line 797, in get_engine
return connector.get_engine()
File "/Project/app/distlib/flask_sqlalchemy/__init__.py", line 473, in get_engine
self._engine = rv = sqlalchemy.create_engine(info, **options)
File "/Project/app/distlib/sqlalchemy/engine/__init__.py", line 332, in create_engine
return strategy.create(*args, **kwargs)
File "/Project/app/distlib/sqlalchemy/engine/strategies.py", line 69, in create
dialect = dialect_cls(**dialect_args)
File "/Project/app/distlib/sqlalchemy/dialects/mysql/base.py", line 1986, in __init__
default.DefaultDialect.__init__(self, **kwargs)
File "/Project/app/distlib/sqlalchemy/engine/default.py", line 124, in __init__
self.paramstyle = self.dbapi.paramstyle
AttributeError: ''module'' object has no attribute ''paramstyle''
¿Lo que da? ¿Por qué falta el atributo paramstyle
(DB-API 2.0)?