繁体   English   中英

问题将 pyodbc 连接到 WSL2 的 Windows 10 Pro 上的 MS SQL 数据库 - > Ubuntu 20.04

[英]Issue connecting pyodbc to MS SQL database on Windows 10 Pro from WSL2 -> Ubuntu 20.04

我有一台带有 Windows 10 的电脑。我安装了 Microsoft SQL Server 2019。接下来的操作是在 Windows 10 上安装 WSL2(Ubuntu 20)。 我尝试从 WSL2(Ubuntu 20.04)连接到 Windows 10 上的 MS SQL。

我已经尝试了我所知道的一切以及我发现的一切。 以下是我尝试过但没有成功的两篇关于该主题的文章。

我在 Windows 防火墙中打开了 1433 端口,并尝试使用他,而不是在服务器和驱动程序的所有选项中使用。 我尝试在服务器上使用五个选项,在驱动程序上使用两个选项,你可以在下面的代码中看到这个选项。 我尝试编辑文件 /etc/hosts,在其中添加 IP 地址 172.29.176.1(它的操作在第二个链接中描述)

使用 pyodbc 从 WSL2 连接到 Windows 上的 SQL 服务器 - 连接超时

从 WSL 2/Ubuntu sqlcmd 连接到在 Windows 主机上运行的 SQL 服务器

如果从 Windows 连接到 MS SQL 一切正常。

可能是什么问题,我做错了什么,我将不胜感激?

import pyodbc
import pandas as pd
import socket

#server1 = f'{socket.gethostname()}.local'
#server2 = 'DESKTOP-2TUPNJK.local'
#server3 = '172.29.176.1' # this is IP-address WSL2 and this IP-address specified in WSL2 (Ubuntu 20.04) -> /etc/resolv.conf
#server4 = '192.168.1.4' # this is IP-address my PC on Windows 10
server5 = '127.0.0.1' # this is IP-address from /etc/hosts -> localhost

#driver1 = '{ODBC Driver 17 for SQL Server}'
driver2 = '/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.9.so.1.1'

cnxn = pyodbc.connect('DRIVER=' + driver2 + ';SERVER='+server5+';PORT=1433;DATABASE=Test;UID=user;PWD=Password')  
df = pd.read_sql_query('SELECT name FROM sys.Tables', cnxn)
print(df)

我得到下一个错误:

pyodbc.OperationalError: ('HYT00', '[HYT00] [Microsoft][ODBC Driver 17 for SQL Server]Login timeout expired (0) (SQLDriverConnect)')

我设法解决了这个问题:

首先->服务器名称必须是您PC的IP地址(Windows cmd中的ipconfig)

第二 -> 下一步按照此说明进行操作(我没有设置 -> ApexSQL 工具)

这是我的代码:

import pyodbc
import pandas as pd

cnxn = pyodbc.connect('DRIVER=/opt/microsoft/msodbcsql17/lib64/libmsodbcsql-17.9.so.1.1;SERVER=192.168.0.2,1433;DATABASE=Test;UID=sa;PWD=Test')

df = pd.read_sql_query('SELECT * FROM sys.Tables', cnxn)
print(df)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM