【发布时间】:2020-08-11 08:29:38
【问题描述】:
我正在尝试将我的 Django 应用程序部署到 Heroku,并为本地和 Heroku 部署进行单独配置。我目前有这个:
if 'DATABASE_URL' in os.environ:
import dj_database_url
DATABASES = {
'default': dj_database_url.config(conn_max_age=600)
}
else:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
方法main 基本上创建了一个Selenium 实例(geckodriver)并从网页上刮掉一些东西。但是,如果我尝试使用语句在本地运行它:
heroku ps:exec
然后运行:
python3 -c 'from scraper.common import main; main()'
打印出来:
Traceback (most recent call last):
File "/app/.heroku/python/lib/python3.8/site-packages/django/db/backends/utils.py", line 64, in execute
return self.cursor.execute(sql, params)
File "/app/.heroku/python/lib/python3.8/site-packages/django/db/backends/sqlite3/base.py", line 328, in execute
return Database.Cursor.execute(self, query, params)
sqlite3.OperationalError: no such table: scraper_listing
因为它仍在使用 SQLite 数据库。然后我以同样的方式连接到测功机并尝试:
python3 -c 'import os; os.environ'
和:
echo $DATABASE_URL
而且输出没有显示 DATABASE_URL 变量。有人可以帮帮我吗?
编辑:提到的 env var 是在 Heroku 中设置的:
如果我运行命令heroku config 我也可以看到它。
【问题讨论】:
-
访问 heroku 仪表板,转到您的应用程序,然后设置并查看环境变量(如果在那里设置了
DATABASE_URL)。 -
是的,已经设置好了。
标签: python django postgresql heroku