首页 > 解决方案 > 连接到远程机器中的数据库 - python - SQL Server

问题描述

我有一个数据库服务器,可以通过远程桌面登录到服务器机器来访问它。这是我们手动执行的操作:

使用远程桌面从本地登录到机器。在连接的机器上打开数据库客户端。然后连接数据库。

现在,我需要使用 python 连接到这个数据库。

我已经尝试过什么?.. 下面适用于我没有远程连接的所有数据库。

conn = pyodbc.connect("DRIVER={ODBC Driver 17 for SQL Server};SERVER=<server name>;database=<DB name>;UID=<user>;PWD=<pwd>")

错误:

pyodbc.OperationalError: ('08001', u'[08001] [Microsoft][ODBC Driver 17 for SQL Server]Named Pipes Provider: 无法打开与 SQL Server [53] 的连接。(53) (SQLDriverConnect); [08001 ] [Microsoft][ODBC Driver 17 for SQL Server]登录超时已过期 (0);[08001] [Microsoft][ODBC Driver 17 for SQL Server]在建立与 SQL 的连接时发生与网络相关或特定于实例的错误服务器。未找到或无法访问服务器。检查实例名称是否正确以及 SQL Server 是否配置为允许远程连接。有关详细信息,请参阅 SQL Server 联机丛书。(53)')

标签: pythonsql-server

解决方案


在 python 中使用以下代码之前,您必须按照本指南配置您的 SQL 服务器https://knowledgebase.apexsql.com/configure-remote-access-connect-remote-sql-server-instance-apexsql-tools/

注意:1434 是我在入站规则中的 UDP 端口

conn = pyodbc.connect('DRIVER={SQL Server};SERVER = your_server_ipv4,1434;DATABASE=B_SQL;UID=sa;PWD=123456;')

cursor = conn.cursor()
#cursor.execute("DELETE FROM my_table") 
for index, row in df.iterrows():
    #print(row)
    cursor.execute("INSERT INTO my_table([Name],[Volume]) values(?,?)", row['Name'], row['Volume']) 

conn.commit()
cursor.close()
conn.close()

它对我很有用!


推荐阅读