我应该如何设置我的DATABASE_URL?
How should I set my DATABASE_URL?
我正在开发我的第一个 Heroku/Django 应用程序。我只是想确定我是否正确设置了 DATABASE_URL
和 DATABASES
变量。这是我的代码中的内容:
import dj_database_url
DATABASE_URL = 'postgresql:///my_app'
# Parse database configuration from $DATABASE_URL
DATABASES = {
'default': dj_database_url.config(default=DATABASE_URL)
}
当我只有 DATABASES['default'] = dj_database_url.config()
并尝试使用 run server
或 migrate
等 Django 命令时,我收到以下错误:NameError: name 'DATABASES' is not defined
。我设置了 DATABASE_URL
因为这样做似乎可以解决这个问题(在我创建 my_app
数据库之后)。
在我编码和测试时一切似乎都运行良好,但我还在 Internet 上看到了六种不同的设置数据库变量的方法。如果这不正确,我想立即修复它。真正让我困惑的是,当我将我的应用程序推送到 Heroku 时,当数据库为 /usr/local/var/postgres 时,数据将如何推送到网络?或者这根本不会发生?我现在是不是太confused/tired了?
这记录在 Heroku Devecenter
# Parse database configuration from $DATABASE_URL
import dj_database_url
# DATABASES['default'] = dj_database_url.config()
#updated
DATABASES = {'default': dj_database_url.config(default='postgres://user:pass@localhost/dbname')}
如果你需要Database connection pooling add this bits too. More details
# Enable Connection Pooling
DATABASES['default']['ENGINE'] = 'django_postgrespool'
这是一个简单的逻辑问题。在定义字典本身之前,不能设置 DATABASES 字典的 "default" 键。
无论您是否在调用中将 default
参数 设置为 dj_database_url
或作为单独的 DATABASE_URL
变量都无关紧要,尤其是因为它甚至不会在 Heroku 上使用,因为它会被环境变量覆盖。
这允许您在开发过程中使用任何数据库设置,
但在生产环境中(在 Heroku 上),DATABASES['default'].update(db_from_env)
将数据库设置更改为 Heroku 创建的设置。
import dj_database_url
DATABASES = {
'"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": os.path.join(BASE_DIR, "db.sqlite3"),
}
}
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)
您可以使用任何数据库设置,但最后两行允许 heroku 为您创建自己的数据库。
我正在开发我的第一个 Heroku/Django 应用程序。我只是想确定我是否正确设置了 DATABASE_URL
和 DATABASES
变量。这是我的代码中的内容:
import dj_database_url
DATABASE_URL = 'postgresql:///my_app'
# Parse database configuration from $DATABASE_URL
DATABASES = {
'default': dj_database_url.config(default=DATABASE_URL)
}
当我只有 DATABASES['default'] = dj_database_url.config()
并尝试使用 run server
或 migrate
等 Django 命令时,我收到以下错误:NameError: name 'DATABASES' is not defined
。我设置了 DATABASE_URL
因为这样做似乎可以解决这个问题(在我创建 my_app
数据库之后)。
在我编码和测试时一切似乎都运行良好,但我还在 Internet 上看到了六种不同的设置数据库变量的方法。如果这不正确,我想立即修复它。真正让我困惑的是,当我将我的应用程序推送到 Heroku 时,当数据库为 /usr/local/var/postgres 时,数据将如何推送到网络?或者这根本不会发生?我现在是不是太confused/tired了?
这记录在 Heroku Devecenter
# Parse database configuration from $DATABASE_URL
import dj_database_url
# DATABASES['default'] = dj_database_url.config()
#updated
DATABASES = {'default': dj_database_url.config(default='postgres://user:pass@localhost/dbname')}
如果你需要Database connection pooling add this bits too. More details
# Enable Connection Pooling
DATABASES['default']['ENGINE'] = 'django_postgrespool'
这是一个简单的逻辑问题。在定义字典本身之前,不能设置 DATABASES 字典的 "default" 键。
无论您是否在调用中将 default
参数 设置为 dj_database_url
或作为单独的 DATABASE_URL
变量都无关紧要,尤其是因为它甚至不会在 Heroku 上使用,因为它会被环境变量覆盖。
这允许您在开发过程中使用任何数据库设置,
但在生产环境中(在 Heroku 上),DATABASES['default'].update(db_from_env)
将数据库设置更改为 Heroku 创建的设置。
import dj_database_url
DATABASES = {
'"default": {
"ENGINE": "django.db.backends.sqlite3",
"NAME": os.path.join(BASE_DIR, "db.sqlite3"),
}
}
db_from_env = dj_database_url.config(conn_max_age=500)
DATABASES['default'].update(db_from_env)
您可以使用任何数据库设置,但最后两行允许 heroku 为您创建自己的数据库。