【问题标题】:Uable to run manage.py runserver in Django无法在 Django 中运行 manage.py runserver
【发布时间】:2016-01-13 15:28:04
【问题描述】:

我无法启动manage.py runserver。我正在使用 Cassandra 数据库,并且我已经导入了所有必需的模块。我正在尝试运行非常基本的应用程序。

我在 Windows 10 上运行 python 2.7。这是我得到的错误:

C:\Users\Aditya\Desktop\try_cassandra\try_cass>manage.py runserver
C:\Python27\lib\site-packages\django\db\utils.py:238: RemovedInDjango19Warning: In Django 1.9 the TEST_NAME connection setting will be moved to a NAME entry in the TEST setting
  self.prepare_test_settings(alias)

C:\Python27\lib\site-packages\django\db\utils.py:238: RemovedInDjango19Warning: In Django 1.9 the TEST_NAME connection setting will be moved to a NAME entry in the TEST setting
  self.prepare_test_settings(alias)

Performing system checks...

System check identified no issues (0 silenced).
Unhandled exception in thread started by <function wrapper at 0x0454D030>
Traceback (most recent call last):
  File "C:\Python27\lib\site-packages\django\utils\autoreload.py", line 229, in wrapper
    fn(*args, **kwargs)
  File "C:\Python27\lib\site-packages\django\core\management\commands\runserver.py", line 116, in inner_run
    self.check_migrations()
  File "C:\Python27\lib\site-packages\django\core\management\commands\runserver.py", line 168, in check_migrations
    executor = MigrationExecutor(connections[DEFAULT_DB_ALIAS])
  File "C:\Python27\lib\site-packages\django\db\migrations\executor.py", line 19, in __init__
    self.loader = MigrationLoader(self.connection)
  File "C:\Python27\lib\site-packages\django\db\migrations\loader.py", line 47, in __init__
    self.build_graph()
  File "C:\Python27\lib\site-packages\django\db\migrations\loader.py", line 182, in build_graph
    self.applied_migrations = recorder.applied_migrations()
  File "C:\Python27\lib\site-packages\django\db\migrations\recorder.py", line 60, in applied_migrations
    return set(tuple(x) for x in self.migration_qs.values_list("app", "name"))
  File "C:\Python27\lib\site-packages\django\db\models\query.py", line 162, in __iter__
    self._fetch_all()
  File "C:\Python27\lib\site-packages\django\db\models\query.py", line 965, in _fetch_all
    self._result_cache = list(self.iterator())
  File "C:\Python27\lib\site-packages\django\db\models\query.py", line 1220, in iterator
    for row in compiler.results_iter():
  File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py", line 794, in results_iter
    results = self.execute_sql(MULTI)
  File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py", line 829, in execute_sql
    sql, params = self.as_sql()
  File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py", line 378, in as_sql
    extra_select, order_by, group_by = self.pre_sql_setup()
  File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py", line 48, in pre_sql_setup
    self.setup_query()
  File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py", line 39, in setup_query
    self.select, self.klass_info, self.annotation_col_map = self.get_select()
  File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py", line 219, in get_select
    ret.append((col, self.compile(col, select_format=True), alias))
  File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py", line 357, in compile
    sql, params = node.as_sql(self, self.connection)
  File "C:\Python27\lib\site-packages\django\db\models\expressions.py", line 619, in as_sql
    return "%s.%s" % (qn(self.alias), qn(self.target.column)), []
  File "C:\Python27\lib\site-packages\django\db\models\sql\compiler.py", line 348, in quote_name_unless_alias
    r = self.connection.ops.quote_name(name)
  File "C:\Python27\lib\site-packages\django\db\backends\base\operations.py", line 317, in quote_name
    raise NotImplementedError('subclasses of BaseDatabaseOperations may require a quote_name() method')
NotImplementedError: subclasses of BaseDatabaseOperations may require a quote_name() method

这是我在settings.py 中的数据库设置:

DATABASES = {
    'default': {
        'ENGINE': 'django_cassandra_engine',
        'NAME': 'db',
        'TEST_NAME': 'test_db',
        'HOST': '127.0.0.1',
        'OPTIONS': {
            'replication': {
                'strategy_class': 'SimpleStrategy',
                'replication_factor': 1
            }
        }
    }
}

【问题讨论】:

  • 发布settings.py 的数据库部分。也给我们一些更多的细节。你如何将 Cassandra 与 django 一起使用?通过django-nonrel、django-cassandra-engine?
  • 另外,您得到的错误是回溯中的最后一行:NotImplementedError: subclasses of BaseDatabaseOperations may require a quote_name() method。这很可能意味着您的数据库设置或您正在使用的后端模块有问题。
  • @gbs 我已经编辑了这个问题,你现在可以检查一下。谢谢

标签: python django python-2.7 cassandra manage.py


【解决方案1】:

尝试删除 INSTALLED_APPS is settings.py 中列出的值

删除 django.contrib.staticfiles 对我有用,或者将 django_cassandra_engine 放在 INSTALLED_APPS 列表的顶部

【讨论】:

  • thanx ,我错过了。它就像一个魅力。
【解决方案2】:

您的错误与 django-cassandra-engine 后端 doesn't implement quote_name 方法有关。这是一种仅在包含不规则字符的表或字段名称周围加上引号的方法。最简单的解决方法可能是检查所有表和字段名称,并确保只有 ASCII 字符而没有其他字符(例如,您使用的是 unicode 字符吗?)。

如果这不起作用,您的其他选择是:

  • django-cassandra-engine 中提出问题。该项目看起来很活跃,因此可能很快就会得到修复。
  • 自己解决问题:克隆并手动安装 django-cassandra-engine,然后在 base/operations.py 中添加 quote_name 的实现。正文需要简单地类似于return '"%s"' % name。如果您这样做并且它有效,您可以提交拉取请求以获得永久修复。

【讨论】:

  • 如果我直接从数据库返回行,它会返回 Row(phno=123, age=22, uname=u'mathur')Row(phno=234, age=22, uname=u' mathur') 所以我认为 unicode 字符在那里,如何删除它们,我不太擅长这个,我刚开始。
  • @Aditya,如果您刚开始使用 django,我建议您从支持的数据库之一开始,直到您熟悉它为止。 django-cassandra-engine 是一个实验性的后端,有很多限制,可能需要您进行一些修改才能在实践中使用。现在,正如我在回答中提到的,您可以就这个具体问题联系作者。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-05
  • 1970-01-01
  • 2022-07-01
  • 2019-01-31
  • 2018-06-01
  • 2014-09-28
  • 1970-01-01
相关资源
最近更新 更多