【问题标题】:database Django on jythonjython 上的数据库 Django
【发布时间】:2014-10-20 11:24:04
【问题描述】:

请帮助我在 django 上将数据库与 jython 连接起来,并在我将 jython manage.py runserver 服务器不运行时帮助我使用服务器

DATABASES = {
    'default': {
        #'ENGINE': 'doj.backends.zxjdbc.sqlite3',
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'tanagraweb',
        'USER': 'root',
        'PASSWORD': 'root',
        'HOST': '127.0.0.1',
        'PORT': '3306',
    }
}

然后 django 抛出这个:

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "C:\jython2.7b3\Lib\site-packages\django\core\management\__init__.py", line 399, in execute_from_command_line
    utility.execute()
  File "C:\jython2.7b3\Lib\site-packages\django\core\management\__init__.py", line 392, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "C:\jython2.7b3\Lib\site-packages\django\core\management\base.py", line 242, in run_from_argv
    self.execute(*args, **options.__dict__)
  File "C:\jython2.7b3\Lib\site-packages\django\core\management\base.py", line 280, in execute
    translation.activate('en-us')
  File "C:\jython2.7b3\Lib\site-packages\django\utils\translation\__init__.py", line 130, in activate
    return _trans.activate(language)
  File "C:\jython2.7b3\Lib\site-packages\django\utils\translation\trans_real.py", line 188, in activate
    _active.value = translation(language)
  File "C:\jython2.7b3\Lib\site-packages\django\utils\translation\trans_real.py", line 177, in translation
    default_translation = _fetch(settings.LANGUAGE_CODE)
  File "C:\jython2.7b3\Lib\site-packages\django\utils\translation\trans_real.py", line 159, in _fetch
    app = import_module(appname)
  File "C:\jython2.7b3\Lib\site-packages\django\utils\importlib.py", line 40, in import_module
    __import__(name)
  File "C:\jython2.7b3\Lib\site-packages\django\contrib\admin\__init__.py", line 6, in <module>
    from django.contrib.admin.sites import AdminSite, site
  File "C:\jython2.7b3\Lib\site-packages\django\contrib\admin\sites.py", line 4, in <module>
    from django.contrib.admin.forms import AdminAuthenticationForm
  File "C:\jython2.7b3\Lib\site-packages\django\contrib\admin\forms.py", line 6, in <module>
    from django.contrib.auth.forms import AuthenticationForm
  File "C:\jython2.7b3\Lib\site-packages\django\contrib\auth\forms.py", line 17, in <module>
    from django.contrib.auth.models import User
  File "C:\jython2.7b3\Lib\site-packages\django\contrib\auth\models.py", line 47, in <module>
    @python_2_unicode_compatible
  File "C:\jython2.7b3\Lib\site-packages\django\db\models\base.py", line 96, in __new__
    new_class.add_to_class('_meta', Options(meta, **kwargs))
  File "C:\jython2.7b3\Lib\site-packages\django\db\models\base.py", line 264, in add_to_class
    value.contribute_to_class(cls, name)
  File "C:\jython2.7b3\Lib\site-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 "C:\jython2.7b3\Lib\site-packages\django\db\__init__.py", line 34, in __getattr__
    return getattr(connections[DEFAULT_DB_ALIAS], item)
  File "C:\jython2.7b3\Lib\site-packages\django\db\utils.py", line 198, in __getitem__
    backend = load_backend(db['ENGINE'])
  File "C:\jython2.7b3\Lib\site-packages\django\db\utils.py", line 113, in load_backend
    return import_module('%s.base' % backend_name)
  File "C:\jython2.7b3\Lib\site-packages\django\db\utils.py", line 113, in load_backend
    return import_module('%s.base' % backend_name)
  File "C:\jython2.7b3\Lib\site-packages\django\utils\importlib.py", line 40, in import_module
    __import__(name)
  File "C:\jython2.7b3\Lib\site-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

我研究并发现这是 mysql 的连接器,但我不知道为什么这不起作用 如果有人在 django 上的 jython 有一个项目,我将非常感激,这太难了

【问题讨论】:

    标签: database django jython-2.5


    【解决方案1】:

    虽然MySQLdb 是 Python/Django 社区中使用最广泛的 MySql 库,但您不能使用它,因为 Jython 不支持 C 扩展。

    要在 Django 中使用 Jython,您需要安装 django-jython 并将 db 后端设置为 'ENGINE': 'doj.db.backends.mysql'

    这在官方文档Running Django on Jython中有记录

    【讨论】:

    • 我已经尝试过了,但是没有用,'ENGINE': 'doj.backends.zxjdbc.sqlite3' 错误是 django.core.exceptions.ImproperlyConfigured: Error loading SQLite3 JDBC driver: No module命名 sqlite 可能是我不知道为什么的类路径
    【解决方案2】:
    1. 使用“pip install pymysql”安装pymysql
    2. 将以下内容添加到您的 manage.py 文件中:

    import pymysql

    pymysql.install_as_MySQLdb()

    1. 在您的 DATABASES 设置中,使用:

    ENGINE': 'django.db.backends.mysql',

    【讨论】:

      猜你喜欢
      • 2015-06-30
      • 2013-03-05
      • 1970-01-01
      • 1970-01-01
      • 2011-07-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-07-08
      相关资源
      最近更新 更多