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