PythonAnywhere:manage.py返回"访问被拒绝用户'用户'%'%'到数据库'用户'"

时间:2018-06-10 19:58:53

标签: python django pythonanywhere manage.py

我在使用PythonAnywhere时遇到了非常令人沮丧的问题。每当我需要运行manage.py时,我已经设法通过做一些hacky工作来启动和运行我的站点但是现在我需要设置一个自动化任务,这不再是一个选项。

问题在于,在PythonAnywhere数据库中必须在约定" user $ database"中命名。由于美元符号,每当我运行类似python manage.py inspectdb的内容时,我都会收到标题中提到的错误,因为所附的美元符号被shell认为是环境变量。

目前,我将生产环境变量存储在.env文件中并将其设置为settings.py文件。这在Django内部工作,但在shell中运行manage.py命令时不起作用。我尝试通过在manage.py文件中添加以下代码来解决问题:

# update DATABASE_NAME to use \$ instead of $ else bash commands wont work
os.putenv(
    "DATABASE_NAME",
    str(os.getenv("DATABASE_NAME")).replace('$', '\\$')
)

但是,这并不能解决问题。

我还试图通过创建一个名为production_settings.py的文件来解决这个问题,该文件包含我的DATABASES设置,并将数据库名称包含在我的settings.py文件旁边的单引号中,然后在我的settings.py文件中插入以下代码设置我的DATABASES设置:

try:
    from production_settings import DATABASES
except ImportError:
    pass

同样,这不起作用。我曾尝试过使用PythonAnywhere寻求支持,但似乎没有任何支持,所以我来这里是希望有人知道如何解决这个问题。我现在落后了......我该怎么办???

1 个答案:

答案 0 :(得分:0)

听起来你需要在env文件中的值周围添加单引号。