You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Databricks中使用Python执行基础数据查询?

在Databricks中运行现有Python数据处理代码的解决方案

核心问题分析

你遇到的两个错误本质是没利用Databricks的原生数据访问能力:

  • read_sql缺少con参数:Pandas的read_sql必须传入数据库连接对象,第一次调用时未传入
  • pyodbc模块缺失:Databricks集群默认不预装pyodbc,且用ODBC连接自身表完全没必要

最优解决方案:用Databricks原生Spark读取并转Pandas DataFrame

Databricks内置了SparkSession对象(spark),可以直接访问集群中的表,再转成Pandas DataFrame,原有Python代码无需大幅修改:

import pandas as pd

# 用Spark SQL读取Databricks中的目标表(无需额外连接配置)
spark_df = spark.sql("SELECT * FROM databasename.tablename")

# 转换为Pandas DataFrame,后续原有Pandas处理代码直接使用这个df即可
df = spark_df.toPandas()

优势

  1. 无需安装任何额外模块,直接使用Databricks内置能力
  2. 大数据量场景下,Spark先做分布式读取/过滤,再转Pandas,性能远优于单节点的pyodbc+Pandas方案
  3. 原有Pandas处理代码可以直接复用,无需修改逻辑

若必须使用Pandas read_sql的兼容方案

如果你的代码强依赖pandas.read_sql,可以按以下步骤操作:

  1. 安装pyodbc模块
    在Databricks Notebook中执行以下命令安装(推荐通过集群库管理永久安装,避免重启后丢失):

    %pip install pyodbc
    
  2. 配置Databricks ODBC连接
    需要获取Databricks工作区的连接信息(工作区URL、HTTP路径、个人访问令牌),然后构造正确的连接字符串:

    import pyodbc
    
    # 替换为你的Databricks连接信息
    conn_str = (
        "Driver={Databricks ODBC Driver};"
        "Hostname=your-workspace-url.databricks.com;"
        "Port=443;"
        "HTTPPath=/sql/1.0/warehouses/your-warehouse-id;"
        "AuthMech=3;"
        "UID=token;"
        "PWD=your-personal-access-token;"
    )
    
    # 建立连接并读取数据
    conn = pyodbc.connect(conn_str)
    df = pd.read_sql("SELECT * FROM databasename.tablename", con=conn)
    

注意事项

  • 需要在集群上安装Databricks ODBC驱动(部分云环境的Databricks集群可能已预装)
  • 该方案仅适合小数据量场景,大数据量下性能远不如原生Spark方案

内容的提问来源于stack exchange,提问作者Ziggy

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 12:30:41