Python - 使用来自 Excel 数据连接的信息使用 pyodbc 连接到远程服务器

Python - Using pyodbc to connect to remote server using info from Excel data connection

我有一个 excel(尽管是在我们公司的服务器上),它与我们的 SQL 数据库建立了数据连接,因此我们可以制作漂亮的数据透视表。

我想将该数据输入 python(在我的本地计算机上)以便我可以进行一些更快的分析。

我已经安装了pyodbc。

这是 excel 中的 "connection string":

Provider=SQLOLEDB.1;Password=**mypassword**;Persist Security Info=True;User
ID=**myusername**;Initial Catalog=**catalogename**;Data 
Source=**datasourcename**;Use Procedure for Prepare=1;Auto 
Translate=True;Packet Size=4096;Workstation ID=**workstationid**;Use 
Encryption for Data=False;Tag with column collation when possible=False

现在我有了 python 脚本:

import pyodbc
cnxn = pyodbc.connect(DRIVER='{SQL Server}',SERVER='***server ip address**',DATABASE='**cataloguename**',UID='**myusername**',PWD='**mypassword**')
cursor = cnxn.cursor()

我收到错误提示 SQL 服务器不存在或访问被拒绝。

非常感谢任何帮助。

您不需要在每个字段周围加上单引号,并且可能需要一个端口...尝试这样的操作:

cnxn = pyodbc.connect('DRIVER={SQL Server};SERVER=192.168.123.456;PORT=1433;DATABASE=yourdb;UID=your_user;PWD=your_pw;')

祝你好运!

请通过控制面板-管理工具-ODBC连接安装SQL服务器驱动程序

为了连接到远程服务器 SQL,我发现此解决方案有效。 这里,端口号是important也就是1433.

import pyodbc
server = 'tcp:***your_server_name*,1433' (i.e your_server_name = abcd.mydomain.com)
database = 'your_DB_NAME' 
username = 'Your_USER_NAME' 
password = 'YOUR_PASSWORD' 
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';UID='+username+';PWD='+ password)
cursor = cnxn.cursor()`enter code here`
cursor.execute('SELECT top 1 * FROM [DBNAME].[SchemaNAME].[YourTable]')
for row in cursor:
    print(row)

如果您没有用户名和密码,则只需删除用户名和密码并添加 Trusted_Connection=yes

看这里的例子:

import pyodbc
server = 'tcp:***your_server_name*,1433' (i.e your_server_name = abcd.mydomain.com)
database = 'your_DB_NAME' 
cnxn = pyodbc.connect('DRIVER={ODBC Driver 17 for SQL Server};SERVER='+server+';DATABASE='+database+';Trusted_Connection=yes')
cursor = cnxn.cursor()
cursor.execute('SELECT top 1 * FROM [DBNAME].[SchemaNAME].[YourTable]')
for row in cursor:
    print(row)

Ckick here for more details