使用django/python和芹菜将postgres数据库中的数据自动转储到.sql中

使用django/python和芹菜将postgres数据库中的数据自动转储到.sql中,python,django,postgresql,celery,sh,Python,Django,Postgresql,Celery,Sh,我正在尝试使用django/python自动执行postgres数据库中的常规数据转储。我使用芹菜将其作为一项任务进行自动化,因为我希望数据转储定期运行—每天或每两天。目前我正在使用sh,以下是我的代码: from sh import pg_dump @periodic_task( run_every=(crontab(minute='*/2')), #set to 2 min interval for testing name="portal_backup"

我正在尝试使用django/python自动执行postgres数据库中的常规数据转储。我使用芹菜将其作为一项任务进行自动化,因为我希望数据转储定期运行—每天或每两天。目前我正在使用sh,以下是我的代码:

from sh import pg_dump

@periodic_task(
    run_every=(crontab(minute='*/2')), #set to 2 min interval for testing
    name="portal_backup",
    ignore_result=True)


def portal_backup():
    filename = "portal_backup.sql"
    with gzip.open(filename) as f:
        pg_dump('-U', 'postgres', '-W', '-F', 'p', 'Portal', _out=f)
    print("backup done")
我的所有数据库信息都在我的.env文件中,但是当我运行代码时,会出现以下错误:

**sh.ErrorReturnCode_1: 
  RAN: /usr/bin/pg_dump -U postgres -W -F p Portal
  STDOUT:
  STDERR:
Password: 
pg_dump: error: connection to database "Portal" failed: FATAL:  Peer authentication failed for user "postgres"**

我不知道身份验证失败的原因。如果有人对我如何通过django/python和芹菜自动化此过程有更好的想法,我们将不胜感激。

除了pg_dump之外,您如何连接其他用途,例如仅使用django?通过my.env文件中的键或通过PGAdmin4可以更具体一些吗?什么用户名、什么数据库名、什么主机,密钥是密码、tls证书还是其他什么?