在Heroku dyno中,DATABASE_URL为空

时间:2020-08-11 08:29:38

标签: python django postgresql heroku

我正在尝试将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中设置:

DATABASE_URL in heroku

如果我运行命令heroku config,我也会看到它。

1 个答案:

答案 0 :(得分:0)

问题的根源是heroku ps:exec不使用postgresql,而是使用sqlite。我不知道为什么文档说它连接到现有的测功机。它对我不起作用。

使用heroku run bash