PythonAnywhere:manage.py 返回"Access denied for user 'user'@'%' to database 'user'"



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

问题在于,在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 的文件来解决此问题,该文件包含我的数据库设置,并将数据库名称括在单引号中与我的 settings.py 文件一起,然后在我的 settings.py 文件中插入以下代码以设置我的数据库设置:

try:
from production_settings import DATABASES
except ImportError:
pass

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

这听起来像您需要在 env 文件中的值两边加上单引号。

相关内容

  • 没有找到相关文章

最新更新