通过django WinXP / 7使用sqlite3数据库部署应用程序

时间:2012-04-27 09:59:39

标签: windows django heroku

当前系统:Windows XP / Windows 7(两者都出现问题)

遵循以下的部署准则:

https://devcenter.heroku.com/articles/python

通过使用简单的轮询应用程序进行测试,我成功地能够通过heorku推送应用程序,除了在检查日志后出现以下错误:

2012-04-27T08:14:42+00:00 app[web.1]: django.core.exceptions.ImproperlyConfigure
d: Error loading either pysqlite2 or sqlite3 modules (tried in that order): No m
odule named _sqlite3

尝试同步数据库时也会发生这种情况。

以下是settings.py文件中数据库的当前配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', # Add 'postgresql_psycopg2', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'database.sqlite', # Or path to database file if using sqlite3.
        'USER': '', # Not used with sqlite3.
        'PASSWORD': '', # Not used with sqlite3.
        'HOST': '', # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '', # Set to empty string for default. Not used with sqlite3.
    }
}

我知道它是一个sqlite3数据库,我被告知它应该仍然允许heroku部署应用程序而没有任何错误。 我已经使用了与此问题相关的以下潜在解决方案:

No module named _sqlite3 How do I set up SQLite with a Django project? http://groups.google.com/group/django-users/browse_thread/thread/185f981f432346f1

任何帮助将不胜感激!如果需要其他信息,请告诉我。

2 个答案:

答案 0 :(得分:1)

Heroku不支持sqlite,因为它只提供a read-only filesystem

答案 1 :(得分:0)

我在设置文件中遇到了同样的错误。通过Heroku日志查看,我发现我的settings.py文件由于各种原因而失败。一旦我解决了这些问题,Django就不再抱怨缺少数据库设置。

造成这个问题的一个原因是我用allow sub-selects as tables in QuerySet extra()的猴子补丁。此修补程序位于我的设置文件的末尾。

# Override default behaviour of compiler to quote table names when table name is a sub-query
from django.db.models.sql.compiler import SQLCompiler
_quote_name_unless_alias = SQLCompiler.quote_name_unless_alias
SQLCompiler.quote_name_unless_alias = lambda self,name: name if name.startswith('(') else _quote_name_unless_alias(self,name)

这个补丁显然需要在那时正确指定DATABASES。由于Heroku将magic DATABASES configuration附加到设置文件的末尾(即在猴子补丁之后),我不得不在猴子补丁上面手动插入他们的配置。