运行 GAE 开发服务器时,本地 MySQLdb 连接失败并出现 AttributeError for paramstyle
Posted
技术标签:
【中文标题】运行 GAE 开发服务器时,本地 MySQLdb 连接失败并出现 AttributeError for paramstyle【英文标题】:Local MySQLdb connection fails with AttributeError for paramstyle when running GAE development server 【发布时间】:2013-12-24 09:34:30 【问题描述】:我正在使用 Flask-Alchemy 针对 Cloud SQL 构建一个 GAE Flask 应用程序,并在构建应用程序时运行 dev_appserver
来测试它。
但是,如果我将SQLALCHEMY_DATABASE_URI
设置为mysql+gaerdbms:///appname?instance=instanceid
URL,则在尝试调用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'
什么给了?为什么缺少(需要 DB-API 2.0)paramstyle
属性?
【问题讨论】:
【参考方案1】:这意味着MySQLdb
模块丢失并且无法导入。 GAE SDK 本身不附带 MySQLdb 客户端库;安装 MySQLdb (as instructed in the SDK documentation):
venv/bin/pip install mysql-python
或使用您的操作系统包管理器在您的系统 python 中安装 MySQLdb。
该错误是由 Google google.appengine.api.rdbms_mysqldb
模块引起的,该模块充当存根,当 import MySQLdb
失败时没有 paramstyle
属性。提供了一个存根 connect()
函数,该函数将引发一个更有帮助的异常,但由于与 SQLAlchemy 的不幸交互,该错误提供的信息要少得多。
【讨论】:
这也可能意味着导入 MySQLdb 存在其他问题。这也很有帮助:***.com/questions/6383310/…以上是关于运行 GAE 开发服务器时,本地 MySQLdb 连接失败并出现 AttributeError for paramstyle的主要内容,如果未能解决你的问题,请参考以下文章
从本地 GAE 项目连接到 Google Cloud Datastore