python - 在 python 中连接到代理 (SOCKS) 数据库

标签 python sql database sockets socks

我正在尝试连接到需要 的数据库代理( socks )为了能够连接,如果我手动使用代理连接,我可以连接,但我需要让脚本连接到代理( socks )制造这个的机器 SELECT
脚本

import socket
import socks
import requests
import pymssql

socks.set_default_proxy(socks.SOCKS5, "138.34.133.155", 1080, True, 'user','password')
socket.socket = socks.socksocket

server = '172.43.56.89'
username = 'user'
password = 'password'
database = 'dbname'

conn = requests.get(pymssql.connect(host=server,user=username,password=password,database=database))

cursor = conn.cursor()

cursor.execute("SELECT column FROM table")

row = cursor.fetchall()

conn.close()

for i in row:
    print(i)

输出

Traceback (most recent call last): File "connection.py", line 15, in conn = requests.get(pymssql.connect(host=server,user=username,password=password,database=database)) File "src\pymssql.pyx", line 642, in pymssql.connect pymssql.OperationalError: (20009, 'DB-Lib error message 20009, severity 9:\nUnable to connect: Adaptive Server is unavailable or does not exist (172.43.56.89:1433)\nNet-Lib error during Unknown error (10060)\n')

最佳答案

我认为一个选择是安装一个带有端口转发的本地隧道 socks ,以映射您的数据库端口并充当您的服务器所在的本地主机。

如果你在 Unix 计算机上运行你的 python 脚本,它真的很有效。

类似于这个系统调用(对于 3306 mariaDB):

ssh -L 3306:localhost:3306 user@x.x.x.x

首先,您运行 SSH,然后,您告诉他启用来自 3306 的端口转发。端口到 localhost:3306您通过 user@IP 连接的服务器的端口.

有了这个,来自您 local machine:3306 的每个查询将通过发送到您的 MariaDB:3306服务器,让您可以像在服务器上一样使用它。

关于python - 在 python 中连接到代理 (SOCKS) 数据库,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58525651/

相关文章:

python - 将预定义的数字分配给数据框中的列行值

python - 提取第二个和第三个逗号之间的单词

python - SqlAlchemy 加入没有外键的表

sql - 编写正确的 sql 查询时遇到问题

python - 未知的数据库错误python mysql

mysql - 数据库设计问题,我应该防止交叉关系吗?

python - 如何从外部文件中列出 python 中的数字?

python - 如何使用 libclang 的 python 绑定(bind)在 AST 遍历中跳过子树

mysql - 如何过滤搜索属于已删除帖子的答案?

php - 根据 mysql 数据库的分解数据动态创建菜单