【问题标题】:How to start applications with out any database in django如何在没有任何数据库的情况下在 django 中启动应用程序
【发布时间】:2013-12-21 02:00:39
【问题描述】:

我正在尝试在没有任何数据库设置的情况下启动 Django runserver。 目前我已经尝试将 db 引擎设置为 dummy。

python manage.py runserver 可以正常启动了。

但是网页没有正常显示,它显示了一些 python 异常,看起来它正在为我编写的模型类寻找数据库表,并且它正在尝试为我的模型类连接到一些数据库。

谁能给我解决这个问题的方法。我希望我的网页可以在没有任何数据库配置的情况下工作。我的模型课仍然可以正常工作。

关于上述的附加信息: 感谢您的快速回复。我也尝试在数据库设置中设置空值。该项目的要求是在不运行任何数据库的情况下启动网站。该网站项目是在 django 1.1 上构建的旧系统,并且广泛使用 oracle,因此其所有模型类都使用 oracle。但是我必须基本上从站点项目中退出 oracle 数据库并覆盖保存方法以转储到外部文件并使用 tcp 连接即时发送到其他系统。

而且我们不必在生产环境中使用任何单一数据库。

我在网页中遇到的错误如下,这将有助于你们思考可能出现的问题。错误:

文件“/home/AK/trunk/python/portal/../portal/utils/views.py”,第 94 行, init self.get_results(request, max_rows)

文件“/home/AK/trunk/python/portal/../portal/utils/views.py”,第 140 行,在 get_results self.results_count = paginator.count 中

文件“/usr/lib64/python2.6/site-packages/django/core/paginator.py”,第 48 行,在 _get_count self._count = self.object_list.count()

文件“/usr/lib64/python2.6/site-packages/django/db/models/query.py”,第 292 行,计数返回 self.query.get_count()

文件“/usr/lib64/python2.6/site-packages/django/db/models/sql/query.py”,第 376 行,get_count number = obj.get_aggregation()[None]

文件“/usr/lib64/python2.6/site-packages/django/db/models/sql/query.py”,第 348 行,在 get_aggregation 结果 = query.execute_sql(SINGLE)

文件“/usr/lib64/python2.6/site-packages/django/db/models/sql/query.py”,第2360行,在execute_sql sql中,params = self.as_sql()

文件“/usr/lib64/python2.6/site-packages/django/db/models/sql/query.py”,第 401 行,在 as_sql from_ 中,f_params = self.get_from_clause()

文件“/usr/lib64/python2.6/site-packages/django/db/models/sql/query.py”,第 861 行,在 get_from_clause result.append('%s%s%s' % (连接器, qn(name), alias_str))

文件“/usr/lib64/python2.6/site-packages/django/db/models/sql/query.py”,第 175 行,quote_name_unless_alias r = self.connection.ops.quote_name(name)

文件“/usr/lib64/python2.6/site-packages/django/db/backends/dummy/base.py”,第 15 行,抱怨引发 ImproperlyConfigured,“您尚未设置 DATABASE_ENGINE 设置。 "

配置不当:您尚未设置 DATABASE_ENGINE 设置。

谢谢

【问题讨论】:

  • 请提供更多细节。听起来您的某个文件(可能是 url 或视图)仍在引用您的模型。但我们需要查看代码。如果这不是“学术”问题,您可以随时使用 sqlite。
  • 我已经在帖子中添加了更多细节,请看一下。
  • 请分享settings.py这将有很大帮助。

标签: python django


【解决方案1】:

您必须首先禁用大多数应用程序(包括使用数据库记录用户交互的管理员)。如果您想要一个没有数据库的简单 python 网站(可能用于其他应用程序远程管理),我鼓励您使用任何其他轻量级框架,例如 tornado 或 flask。

django 的大部分优势在于 ORM 或现有应用程序,这些应用程序通常需要数据库。

如果你不知道其他框架,想快速获得结果,又不想浪费太多时间学习,我建议你先看看flask:http://flask.pocoo.org/docs/quickstart/

如果您需要性能和使用工具来处理您的 tcp 连接和使用异步性能处理文件的多合一体验,您可能希望使用扭曲的 Web 服务器。

但我同意,它看起来更难使用。

【讨论】:

    【解决方案2】:

    我在想 importd 可能非常适合您尝试做的事情,但根据 slides/ documentation 它假设 SQLite 可用。

    【讨论】:

      【解决方案3】:

      您可以使用sqlite3 作为您的数据库引擎,并运行syncdb。因此,django 可以将您的模型存储在基于文件的 sqlite 数据库中,一切都会好起来的。

      这个设置可以从settings.py:

      DATABASES = {
          'default': {
              'ENGINE': 'django.db.backends.sqlite3',
              'NAME': 'mydatabase'
          }
      }
      

      【讨论】:

      • 在 Django 设置中它被称为 sqlite3 但除此之外我认为这个答案涵盖了他的需求。
      • 这将是 OP 想要的,更要补充的是,如果你想使用 models.Model 或任何形式的身份验证,Django 无法在没有数据库的情况下运行,因为 Django 依赖于管理界面在数据库中存储一些与框架相关的东西。
      猜你喜欢
      • 2019-11-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-15
      • 2021-09-26
      • 2014-10-09
      • 2019-11-28
      相关资源
      最近更新 更多