Python连接远程linux服务器上的数据库

引入这两个包,ssh远程登录和数据库操作

from sshtunnel import SSHTunnelForwarder

from sqlalchemy import create_engine

主程序里配置好连接信息

ssh_host = "" # 堡垒机ip地址或主机名
    ssh_port = 22 # 堡垒机连接mysql服务器的端口号,一般都是22,必须是数字
    ssh_user = "root" # 这是你在堡垒机上的用户名
    ssh_password = "" # 这是你在堡垒机上的用户密码
    mysql_host = "127.0.0.1" # 这是你mysql服务器的主机名或ip地址
    mysql_port = 3306 # 这是你mysql服务器上的端口,3306,mysql就是3306,必须是数字
    mysql_user = "root" # 这是你mysql数据库上的用户名
    mysql_password = "" # 这是你mysql数据库的密码
    mysql_db = "book" # mysql服务器上的数据库名
    server = SSHTunnelForwarder(
                    # 跳板机ip与ssh登录端口号
                    ssh_address_or_host=(ssh_host, ssh_port),
                    # 跳板机登录账号
                    ssh_username=ssh_user,
                    # 跳板机登录密码
                    ssh_password = ssh_password,
                    remote_bind_address=(mysql_host, mysql_port)
                    )
    server.start()
    local_port = str(server.local_bind_port)
    #这里使用sqlalchemy 创建连接引擎,其他连接引擎类似
    ENGINE = dict(
        url=f'mysql+pymysql://{mysql_user}:{mysql_password}@{"127.0.0.1"}:{local_port}/{mysql_db}?charset=utf8',
        pool_size=10,
        pool_recycle=1600,
        pool_pre_ping=True,
        pool_use_lifo=True,
        max_overflow=2
    )
    conn = create_engine(**ENGINE).connect()
    SQLString = "select fid,isPDF from `book`.`ssdb` where ssid='"+ssid+"';"
        resultList = conn.execute(SQLString).all()
#  resultlist这个查询结果集的操作处理就和本地数据库一样

你可能感兴趣的:(python,服务器,数据库,linux)