我有一个数据库服务器,可以通过远程桌面登录到服务器计算机来访问。这是我们手动执行的操作:
使用远程桌面从本地登录到计算机。 在连接的计算机中打开数据库客户端。 然后连接到数据库。
现在,我需要使用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)')
答案 0 :(得分:0)
您可以从其他应用程序(包括Excel)连接到SQL Server吗?
如果不能,我将检查以下内容:
远程进入服务器并打开SQL Server配置管理器。
应该有一个标记为“ SQL Server网络配置”的部分,其中将有一个“ Protocols for”条目。如果单击该条目,将看到为数据库启用了哪些协议。
单击TCP / IP并选择属性。在IP地址下,列出的每个IP可能需要列出一个端口。
完成后,请确保在服务器上的防火墙中为入站和出站启用了端口。
当我管理一个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()
对我来说很好!