使用Python通过VPN连接到数据库

使用Python通过VPN连接到数据库,python,sql-server,python-3.x,vpn,Python,Sql Server,Python 3.x,Vpn,我希望通过Python中的VPN访问SQL数据库 一切都已在服务器端配置。我可以在笔记本电脑上使用Visual Studio,配置ODBC驱动程序并设置ODBC数据源,并且我可以使用WatchGuard Mobile作为VPN客户端(具有凭据)从该设置访问该数据库 就Python而言,我应该能够使用包pyodbc连接到数据库,但我不确定首先如何连接到VPN。我已经看到了包openvpnapi和socket,但是我对这些不太熟悉,所以不确定它们是否是我应该考虑解决这个问题的那些包 我只做过 imp

我希望通过Python中的VPN访问SQL数据库

一切都已在服务器端配置。我可以在笔记本电脑上使用Visual Studio,配置ODBC驱动程序并设置ODBC数据源,并且我可以使用WatchGuard Mobile作为VPN客户端(具有凭据)从该设置访问该数据库

就Python而言,我应该能够使用包
pyodbc
连接到数据库,但我不确定首先如何连接到VPN。我已经看到了包
openvpnapi
socket
,但是我对这些不太熟悉,所以不确定它们是否是我应该考虑解决这个问题的那些包

我只做过

import openvpn_api

v = openvpn_api.VPN(HOST, PORT)                                                                                                      
v.connect()

## Output
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/ec2-user/environment/openvpn-api/openvpn_api/vpn.py", line 73, in connect
  raise errors.ConnectError(str(e)) from None
openvpn_api.util.errors.ConnectError: timed out
导入openvpn\u api
v=openvpn_api.VPN(主机、端口)
v、 连接()
##输出
回溯(最近一次呼叫最后一次):
文件“”,第1行,在
文件“/home/ec2 user/environment/openvpn api/openvpn_api/vpn.py”,第73行,在connect中
引发错误。无中的ConnectError(str(e))
openvpn_api.util.errors.ConnectError:超时

导入套接字
将socket.socket(socket.AF_INET,socket.SOCK_STREAM)作为s:
s、 连接((主机、端口))
s、 sendall(b'Hello,world')
数据=s.recv(1024)
s、 recv(1024)
##输出
b'HTTP/1.1 400错误请求\r\n日期:2021年1月12日星期二18:59:29 GMT\r\n内容类型:text/html\r\n内容长度:138\r\n连接:关闭\r\n\r\n\r\n400错误请求\r\n\r\n400错误请求\r\n\r\n

如果您能提供有关
socket
+
pyodbc
方法是否合理的任何反馈,以及有关
socket
或更合适的连接到VPN的包的任何帮助或资源,我将不胜感激。

我认为您根本不必在Python中与VPN交互。您应该能够使用安装在笔记本电脑上的单独VPN客户端连接到VPN。我假设此VPN连接允许您访问SQL Server所在的网络

一旦您通过VPN客户端连接到VPN,您的笔记本电脑应该能够访问SQL Server,并通过ODBC连接到它

导入pyodc
服务器='YourSQLServerName'
driver='{ODBC driver 11 for SQL Server}'#取决于您安装的驱动程序
数据库='YourSQLDatabaseName'
#pyodbc还可以列出已安装的ODBC
#drivers=pyodbc.drivers()
#受信任的\u连接将使用您的本地凭据
##假设不需要单独的用户名和密码(安全性由VPN提供)
connection=pyodbc.connect(driver=driver,server=server,database=database,trusted_connection='yes')
cursor=connection.cursor()
Re“我假设此VPN连接允许您访问SQL Server所在的网络”。是的,就是这样。我正在AWS上完成这项任务,我想到的体系结构,最有趣的成本方面,是通过脚本处理VPN。不过,我现在正在考虑使用其他资源,似乎这最终会让事情变得更简单。感谢提供有用的
pyodbc
代码。
import socket

with socket.socket(socket.AF_INET, socket.SOCK_STREAM) as s:
    s.connect((HOST, PORT))
    s.sendall(b'Hello, world')
    data = s.recv(1024)

s.recv(1024)

## Output
b'HTTP/1.1 400 Bad Request\r\nDate: Tue, 12 Jan 2021 18:59:29 GMT\r\nContent-Type: text/html\r\nContent-Length: 138\r\nConnection: close\r\n\r\n<html>\r\n<head><title>400 Bad Request</title></head>\r\n<body bgcolor="white">\r\n<center><h1>400 Bad Request</h1></center>\r\n</body>\r\n</html>\r\n'