1

我有一个连接到 MySQL 数据库的 django 应用程序,它使用PyMySQL而不是 MySQLdb。有关更多详细信息,请参阅有关此问题的流行答案。

现在,我有必要使用Celery创建一个周期性任务。我在这里遵循了定期任务的文档。

当我运行命令时,celery -A proj beat我收到以下错误:

  File "/usr/local/lib/python3.4/dist-packages/django/contrib/auth/forms.py", line 17, in <module>
    from django.contrib.auth.models import User
  File "/usr/local/lib/python3.4/dist-packages/django/contrib/auth/models.py", line 48, in <module>
    class Permission(models.Model):
  File "/usr/local/lib/python3.4/dist-packages/django/db/models/base.py", line 96, in __new__
    new_class.add_to_class('_meta', Options(meta, **kwargs))
  File "/usr/local/lib/python3.4/dist-packages/django/db/models/base.py", line 264, in add_to_class
    value.contribute_to_class(cls, name)
  File "/usr/local/lib/python3.4/dist-packages/django/db/models/options.py", line 124, in contribute_to_class
    self.db_table = truncate_name(self.db_table, connection.ops.max_name_length())
  File "/usr/local/lib/python3.4/dist-packages/django/db/__init__.py", line 34, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "/usr/local/lib/python3.4/dist-packages/django/db/utils.py", line 198, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "/usr/local/lib/python3.4/dist-packages/django/db/utils.py", line 113, in load_backend
    return import_module('%s.base' % backend_name)
  File "/usr/lib/python3.4/importlib/__init__.py", line 109, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "/usr/local/lib/python3.4/dist-packages/django/db/backends/mysql/base.py", line 17, in <module>
    raise ImproperlyConfigured("Error loading MySQLdb module: %s" % e)
django.core.exceptions.ImproperlyConfigured: Error loading MySQLdb module: No module named 'MySQLdb'

它涉及一个 MySQLdb 模块,但我认为我没有使用 MySQLdb。有人可以就如何解决这个问题提供任何建议吗?

4

2 回答 2

0

我遇到了同样的问题,并且能够通过将以下内容添加到 celery 应用程序来解决它:

import pymysql
pymysql.install_as_MySQLdb()
于 2015-03-29T23:10:19.540 回答
0

为您的计算机操作系统安装合适的 mysql 客户端将解决此问题。:) 在 python 2.x 中,您应该:sudo pip install MySQL-python 在 python 3.x 中,您应该:pip3 install mysqlclient

于 2018-03-11T08:15:26.963 回答