我正在尝试将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(壁虎驱动程序)的实例,并从网页上抓取一些内容。但是,如果我尝试使用以下语句在本地运行它:
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数据库。然后,我以相同的方式连接到dyno并尝试:
python3 -c 'import os; os.environ'
和:
echo $DATABASE_URL
并且输出未显示DATABASE_URL变量。有人可以帮我吗?
编辑:提到的环境变量在Heroku中设置:
如果我运行命令heroku config
,我也会看到它。
答案 0 :(得分:0)
问题的根源是heroku ps:exec
不使用postgresql,而是使用sqlite。我不知道为什么文档说它连接到现有的测功机。它对我不起作用。
使用heroku run bash