我正在尝试连接到需要代理(袜子)的数据库,如果我手动使用代理连接,则可以连接,但需要使脚本连接到机器的代理(袜子)以制作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)
输出
回溯(最近一次通话最后一次):文件“ connection.py”,第15行,在 conn = requests.get(pymssql.connect(host = server,user = username,password = password,database = database)) pymssql.connect中的文件“ src \ pymssql.pyx”,第642行 pymssql.OperationalError:(20009,'DB-Lib错误消息20009, 严重性9:\ n无法连接:Adaptive Server不可用或没有 不存在(172.43.56.89:1433)\nNet-Lib错误,发生未知错误 (10060)\ n')
答案 0 :(得分:1)
我认为一种选择是安装具有端口转发功能的本地隧道袜子,以映射数据库端口并像服务器一样充当本地主机。
如果您在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
服务器,使您可以像在服务器上的任何位置一样使用它。
答案 1 :(得分:0)