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

标签 django postgresql remote-access pythonanywhere

我是 Python 和 Django 的新手。我最近有一个 Django 应用程序在 Linux Mint 18.3 的本地主机上运行,​​带有 Postgresql 数据库。

我已将该应用程序上传到 PythonAnywhere,但不幸的是,它需要 Java 才能实现某些 NLP 功能 (Stanford POS)。有没有办法在本地系统上解析和处理数据并将其保存到远程 Postgres 数据库并从远程服务器提供数据?

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

最佳答案

是的——要从您的本地计算机访问您的 PythonAnywhere Postgres 数据库,您需要使用 SSH 隧道。如果您在本地计算机上使用类 Unix 操作系统(例如 Linux 或 Mac),请参阅 this help page 底部的“手动 SSH 隧道”说明。将通过一些调整来处理这个问题。

帮助页面上的SSH命令是:

ssh -L 3306:username.mysql.pythonanywhere-services.com:3306 username@ssh.pythonanywhere.com

...如您所见,它适用于 MySQL。要使其适用于您的 PythonAnywhere Postgres 服务器,请替换:

  • 第一个 33065432(这意味着在您的本地机器上,它将使用默认的 Postgres 端口)
  • username.mysql.pythonanywhere-services.com 以及 PythonAnywhere 中“数据库”页面上“Postgres”选项卡中的 Postgres 服务器主机名。
  • 第二个 3306 端口来自 PythonAnywhere 中“数据库”页面上的“Postgres”选项卡。

所以你会得到类似的东西

ssh -L 5432:username-123.postgres.pythonanywhere-services.com:10123 username@ssh.pythonanywhere.com

...username12310123 具有不同的值。

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

关于django - 如何使用 Django 保存到远程服务器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49100598/

相关文章:

python - 每次使用不同的文件夹以特定路径在 Django 数据库中上传文件

django - 如何重写自定义管理器类中的 .update() 方法

django - 将 Django 从 MySQL 迁移到 PostgreSQL 后,具体基础模型出现约束问题

eclipse - 使用 Eclipse 远程开发 Node.js 应用程序

python - 使用reportlab和django框架在一个pdf文件中生成多个二维码

python - 在 url 调度中存储 bool 变量

java - eclipselink jpa 使用 COUNT(id) 而不是 COUNT(*) 生成计数查询

sql - 映射用 Hibernate 返回表的 postgres 函数

windows - "Remote machine is AAD"但 "The logon attempt failed"

ssh - 通过Mobaxterm的VSCode无法移动,调整大小或最大化