连接到远程机器中的数据库-Python-SQL Server

时间:2018-07-10 12:48:04

标签: 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驱动程序   SQL Server 17]命名管道提供程序:无法打开与   SQL Server [53]。 (53)(SQLDriverConnect); [08001] [Microsoft] [ODBC   SQL Server驱动程序17]登录超时已过期(0); [08001]   [Microsoft] [用于SQL Server的ODBC驱动程序17]与网络相关或   建立连接时发生特定于实例的错误   到SQL Server。找不到服务器或无法访问服务器。检查是否   实例名称正确,并且SQL Server是否配置为允许   远程连接。有关更多信息,请参见SQL Server联机丛书。   (53)')

2 个答案:

答案 0 :(得分:0)

您可以从其他应用程序(包括Excel)连接到SQL Server吗?

如果不能,我将检查以下内容:

  1. 远程进入服务器并打开SQL Server配置管理器。

    应该有一个标记为“ SQL Server网络配置”的部分,其中将有一个“ Protocols for”条目。如果单击该条目,将看到为数据库启用了哪些协议。

  2. 单击TCP / IP并选择属性。在IP地址下,列出的每个IP可能需要列出一个端口。

  3. 完成后,请确保在服务器上的防火墙中为入站和出站启用了端口。

当我管理一个SQL驱动的应用程序时,通常会遇到其他连接问题(例如防火墙问题或SQL Server浏览器或实例未运行)时出现命名管道错误。

如果这不足以解决问题,MSSQL Tips上还有很多其他选择。

答案 1 :(得分:0)

在python中使用以下代码之前,必须遵循本指南来配置SQL Server 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()

对我来说很好!

相关问题