当运行GAE开发服务器时,本地MySQLdb连接出现AttributeError参数样式错误。

32

我正在使用Flask-Alchemy构建一个GAE Flask应用程序,与Cloud SQL一起运行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个回答

14

这意味着 MySQLdb 模块丢失并且无法导入。 GAE SDK 本身不带有 MySQLdb 客户端库; 按照 SDK 文档中的指示安装 MySQLdb ():

venv/bin/pip install mysql-python

或者使用您的操作系统软件包管理器在系统Python中安装MySQLdb。

错误是由Google google.appengine.api.rdbms_mysqldb模块引起的,它充当一个存根,当import MySQLdb失败时没有paramstyle属性。提供了一个存根connect()函数,将引发更有用的异常,但由于与SQLAlchemy的不幸交互,那里的错误信息要少得多。


4
这可能意味着导入MySQLdb时出现了其他问题。这个链接也很有帮助:https://dev59.com/y2w15IYBdhLWcg3w0e8V - David Underhill

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接