flask-sqlalchemy+ssh+orm+postgres配置

我怕爱的太早我们不能终老 提交于 2020-08-20 06:39:52

需要利用flask-sqlalchemy的orm功能给postgresql9数据库创建表结构,可是最近需要用ssh才能建立连接。这里用到了sshtunnel简单记录一下。

逻辑就是在orm开始前,先启动ssh服务建立连接。

from sshtunnel import SSHTunnelForwarder

# #这里建立数据库连接池
DIALECT = 'postgresql'  # 数据库种类
DRIVER = 'psycopg2'  # 数据库驱动名

USERNAME = 'postgres'  # 用户名
PASSWORD = '000000'  # 密码
HOST = 'localhost'  # 服务器,因为要建立ssh隧道,这里就写localhost即可。
PORT = 5432  # 端口
DATABASE = 'test_db'  # 数据库名

# =============================通过ssh连接到postgres========开始================================
# 如果你需要通过ssh隧道连接到服务器上的postgres数据库的话
# 需要设置下边的ssh配置和postgres连接
ssh_host = "1.1.1.1"      # 这里改成你的服务器ip
ssh_user = "test_user"    # 这里改成你的ssh连接用户名
ssh_password = "123456789" # 这里改成你的ssh密码
ssh_port = 22

forwarding_server =  SSHTunnelForwarder(
        (ssh_host, ssh_port),
        ssh_username=ssh_user,
        ssh_password=ssh_password,
        remote_bind_address=(HOST, PORT)
)
forwarding_server.start()
local_port = forwarding_server.local_bind_port
SQLALCHEMY_DATABASE_URI = 'postgresql://postgres:000000@127.0.0.1:{}/test_db'.format(local_port)

# forwarding_server.close()
# =============================通过ssh连接到postgres========结束================================

# =============================直接连接到postgres========开始================================
# 如果不用ssh隧道连接服务器的postgres的话,就用下边这个正常连接即可。
# SQLALCHEMY_DATABASE_URI = "{}+{}://{}:{}@{}:{}/{}".format(DIALECT, DRIVER, USERNAME, PASSWORD, HOST, PORT, DATABASE)
# =============================直接连接到postgres========结束================================


SQLALCHEMY_TRACK_MODIFICATIONS = False  # 是否追踪数据修改
SQLALCHEMY_ECHO = True  # 是否显示生成的sql的语句

其他的地方不需要修改,每个flask程序可能内容都不一样,我这个统一写在了conf.py里,manage.py在别的地方。

 

参考:

https://www.reddit.com/r/learnpython/comments/831bmw/flasksqlalchemy_with_sshtunnelparamiko/

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!