如何从本地开发环境连接Azure Synapse获取数据?
本地开发环境对接Azure Synapse取数方案
核心思路
仅通过Azure Synapse获取数据,模型开发、代码运行全在本地Anaconda/VSCode/PyCharm环境完成,通过官方SDK或数据库驱动直接对接Synapse数据源,摆脱浏览器端Synapse Studio的限制。
具体实施步骤
1. 搭建本地Python环境
- 用Anaconda创建独立虚拟环境,避免依赖冲突:
conda create -n synapse-local python=3.9 conda activate synapse-local - 安装对接Synapse所需依赖包:
- 若对接Synapse Spark池:
pip install azure-synapse-spark azure-identity - 若对接Synapse SQL池:
pip install pyodbc(需提前在本地安装ODBC Driver 17 for SQL Server驱动程序)
- 若对接Synapse Spark池:
2. 配置Synapse访问权限
- 登录Azure门户,进入Synapse工作区→网络→防火墙,将本地公网IP添加到允许列表,确保本地能访问Synapse服务。
- 创建并配置服务主体(推荐):在Azure AD中注册应用,给该主体分配Synapse工作区的“Storage Blob Data Reader”和“SQL DB Reader”权限,用于身份验证。
3. 本地代码连接Synapse取数
对接Spark池示例
from azure.synapse.spark import SparkClient from azure.identity import DefaultAzureCredential # 替换为你的Synapse工作区URL workspace_url = "https://<你的工作区名称>.dev.azuresynapse.net" credential = DefaultAzureCredential() # 自动读取本地Azure认证信息(如Azure CLI登录状态) client = SparkClient(workspace_url, credential) # 读取Synapse中的Spark表 df = client.spark_session.read.table("数据库名.架构名.表名") # 后续本地处理逻辑 df.show()
对接SQL池示例
import pyodbc # 替换为你的SQL池连接信息 server = "<sql池服务器名>.database.windows.net" database = "<sql池名称>" username = "<服务主体用户名/AD账号>" password = "<服务主体密码/AD密码>" driver = "{ODBC Driver 17 for SQL Server}" # 建立连接并查询数据 conn = pyodbc.connect(f"DRIVER={driver};SERVER={server};PORT=1433;DATABASE={database};UID={username};PWD={password}") cursor = conn.cursor() cursor.execute("SELECT TOP 10 * FROM 架构名.表名") rows = cursor.fetchall() # 转换为DataFrame后续处理(可选) import pandas as pd df = pd.DataFrame.from_records(rows, columns=[desc[0] for desc in cursor.description]) print(df.head())
4. 本地开发工具优化
- VSCode:安装Azure Synapse Analytics扩展,可直观查看Synapse中的数据源结构,代码运行直接用本地虚拟环境执行。
- PyCharm:将Python解释器设置为Anaconda创建的
synapse-local环境,通过“Database”工具添加ODBC连接,快速预览SQL池数据,代码调试全在本地完成。
内容的提问来源于stack exchange,提问作者vikbehal
相关产品推荐
相关产品推荐

