我正在尝试连接到需要 的数据库代理( 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/