[英]Trying to Connect Python With a PostgreSQL DB with SSH Tunnel
[英]django db with ssh tunnel
是否有 python 本地方式通过 ssh 隧道将 django 连接到数据库? 我见过有人在主机中使用 ssh 端口转发,但我更喜欢可以轻松容器化的解决方案。
它非常无缝。
要求: sshtunnel
package https://github.com/pahaz/sshtunnel
settings.py
,在 django DB 设置块之前创建一个 ssh 隧道:from sshtunnel import SSHTunnelForwarder
# Connect to a server using the ssh keys. See the sshtunnel documentation for using password authentication
ssh_tunnel = SSHTunnelForwarder(
SERVER_IP,
ssh_private_key=PATH_TO_SSH_PRIVATE_KEY,
ssh_private_key_password=SSH_PRIVATE_KEY_PASSWORD,
ssh_username=SSH_USERNAME,
remote_bind_address=('localhost', LOCAL_DB_PORT_ON_THE_SERVER),
)
ssh_tunnel.start()
settings.py
中添加数据库信息块。 在这里,我添加了一个默认本地数据库和我们使用 ssh 隧道连接到的远程数据库DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'HOST': NORMAL_DB_HOST,
'PORT': NORMAL_DB_PORT,
'NAME': NORMAL_DB_NAME,
'USER': NORMAL_DB_USER,
'PASSWORD': NORMAL_DB_PASSWORD,
},
'shhtunnel_db': {
'ENGINE': 'django.contrib.gis.db.backends.postgis',
'HOST': 'localhost',
'PORT': ssh_tunnel.local_bind_port,
'NAME': REMOTE_DB_DB_NAME,
'USER': REMOTE_DB_USERNAME,
'PASSWORD': REMOTE_DB_PASSWORD,
},
}
这就对了。 现在可以使用$ python manage.py migrate --database=shhtunnel_db
类的命令迁移到远程数据库,或者使用Models.objects.all().using('shhtunnel_db')
等行从 python 代码中调用数据库Models.objects.all().using('shhtunnel_db')
额外:在我的情况下,远程数据库是由其他人创建的,我只想阅读它。 为了避免编写模型和停用 model 管理器,我使用以下 django 命令从数据库 [ src ] 中获取模型:
python manage.py inspectdb
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.