Lui*_*que 5 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)
Run Code Online (Sandbox Code Playgroud)
输出
回溯(最近一次调用):文件“connection.py”,第 15 行,在 conn = requests.get(pymssql.connect(host=server,user=username,password=password,database=database)) 文件“src\ pymssql.pyx”,第 642 行,在 pymssql.connect pymssql.OperationalError 中:(20009,'DB-Lib 错误消息 20009,严重性 9:\n无法连接:Adaptive Server 不可用或不存在 (172.43.56.89:1433) \n在未知错误 (10060) 期间出现 Net-Lib 错误\n')
我认为一种选择是安装具有端口转发功能的本地隧道袜子,以映射您的数据库端口并充当本地主机的服务器。
如果您在 Unix 计算机上运行 Python 脚本,这确实非常高效。
像这样的系统调用(对于3306mariaDB):
ssh -L 3306:localhost:3306 user@x.x.x.x
Run Code Online (Sandbox Code Playgroud)
首先,你运行SSH,然后,你告诉他启用从3306端口到localhost:3306你连接的服务器端口的端口转发user@IP。
这样,您的每个查询local machine:3306都会发送到您的MariaDB:3306服务器,让您可以像在服务器上一样使用它。
| 归档时间: |
|
| 查看次数: |
2145 次 |
| 最近记录: |