Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/24.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用Django保存到远程服务器_Django_Postgresql_Remote Access_Pythonanywhere - Fatal编程技术网

如何使用Django保存到远程服务器

如何使用Django保存到远程服务器,django,postgresql,remote-access,pythonanywhere,Django,Postgresql,Remote Access,Pythonanywhere,我对Python和Django相当陌生。我最近有一个Django应用程序在LinuxMint18.3的localhost上运行,带有Postgresql数据库 我已经将该应用程序上传到PythonAnywhere,但不幸的是,它需要Java来实现一些NLP功能(斯坦福POS)。是否有办法解析和处理本地系统上的数据,并将其保存到远程Postgres DB,并从远程服务器提供数据 我已经看了一些关于SSH隧道的答案,但我不确定这是否适用于这里?或者,是否可以保存到本地数据库并定期将数据迁移到远程数据

我对Python和Django相当陌生。我最近有一个Django应用程序在LinuxMint18.3的localhost上运行,带有Postgresql数据库

我已经将该应用程序上传到PythonAnywhere,但不幸的是,它需要Java来实现一些NLP功能(斯坦福POS)。是否有办法解析和处理本地系统上的数据,并将其保存到远程Postgres DB,并从远程服务器提供数据


我已经看了一些关于SSH隧道的答案,但我不确定这是否适用于这里?或者,是否可以保存到本地数据库并定期将数据迁移到远程数据库?

是的,您只需使用Django
数据库设置将本地env连接到远程数据库即可

注意在文档中使用Django版本(这里是2.0)

通过这种方式,您可以从本地环境进行写入,从远程服务器进行读取(使用相同的设置连接到远程数据库)

是--要从本地机器访问Pythonywhere Postgres数据库,您需要使用SSH隧道。如果您在本地计算机上使用类似Unix的操作系统(如Linux或Mac),则本部分底部的“手动SSH隧道”指令将处理此问题,并进行一些调整

帮助页面上的SSH命令是:

ssh -L 3306:username.mysql.pythonanywhere-services.com:3306 username@ssh.pythonanywhere.com
…正如您所看到的,这是针对MySQL的。要使其适用于Pythonywhere Postgres服务器,请更换:

  • 第一个
    3306
    5432
    (这意味着在本地计算机上,它将使用默认的Postgres端口)
  • username.mysql.pythonanywhere services.com
    ,其中的Postgres服务器主机名来自pythonanywhere内“数据库”页面上的“Postgres”选项卡
  • 第二个
    3306
    ,其端口来自PythonAnywhere内“Databases”页面上的“Postgres”选项卡
所以你会有类似的结果

ssh -L 5432:username-123.postgres.pythonanywhere-services.com:10123 username@ssh.pythonanywhere.com
…对于
用户名
123
10123
具有不同的值


当您运行该命令(并输入PythonyWhere登录密码,它将提示您输入密码)时,您的计算机上将启动一个进程,该进程对于所有本地进程来说都像Postgres服务器,但实际上只是将所有内容来回转发到PythonyWhere托管的数据库服务器。因此,您可以在本地运行解析和处理代码,它将透明地工作。

这似乎将终端连接到PythonyWhere localhost,但当我使用单独的终端执行解析脚本时,会出现以下错误:
conn=\u connect(dsn,connection\u factory=connection\u factory,**kwasync)psycopg2.OperationalError:无法连接到服务器:连接被拒绝服务器是否在主机“localhost”(127.0.0.1)上运行并在端口5432上接受TCP/IP连接?“
您能否在连接后拍摄运行SSH命令的终端的屏幕截图,并在此处发布指向它的链接(当然,删除任何机密内容)?请查看以下链接中的图像:。如果您有任何帮助,将不胜感激。好的,这样看起来一切正常。如果您(在本地计算机上)运行,您会得到什么命令
lsof | grep LISTEN | grep 5432
没问题,我刚刚让它工作。看起来我只需要关闭并打开一个新终端,而不是使用在打开SSH隧道之前已经打开的终端。我以前尝试过这个,但这不允许从我的本地应用访问。你的DB?托管在哪里。Giles也提供了答案是那里的一个支持团队。