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

Jupyter使用SQLAlchemy连接MSSQL报create_engine未定义错误

SQLAlchemy连接SQL Server报create_engine未定义问题修复

报错根因

你虽然写了from sqlalchemy import create_engine导入语句,但出现NameError只有两种可能:

  • 当前Jupyter Notebook绑定的conda环境没有安装sqlalchemy包,导入语句实际执行失败了,你没注意到导入单元格的报错就直接运行了后续创建连接的代码
  • 之前运行的代码里误删/覆盖了create_engine函数(比如定义过同名变量、执行过del create_engine),导致函数名无法被识别

前置修复步骤

先解决导入报错的问题:

  1. 在Notebook新建单元格单独执行from sqlalchemy import create_engine,如果直接报错提示找不到sqlalchemy模块,就在当前单元格执行安装命令:
!conda install -y sqlalchemy pyodbc
  1. 安装完成后点击菜单栏Kernel->Restart Kernel重启运行内核,清空之前的所有变量缓存
    一定要重启内核才能让新安装的包生效,同时清空之前的错误变量缓存
  2. 重启后先跑导入语句,确认没有报错再继续后续逻辑

现有代码其他问题修正

解决导入问题后,你原来的代码还有3处会导致连接/运行失败的错误,需要一并修改:

  • 连接字符串协议前缀写错:pyodbc连接SQL Server的前缀不是msql://,要改成mssql+pyodbc://
  • 服务器名里的反斜杠存在转义问题:\SQLEXPRESS里的\S会被Python识别为转义字符,需要在字符串前加r标记为原始字符串
  • 末尾拼写错误:pandas查看字段类型的属性是dtypes,你多写了一个e成了dtypese,会触发属性不存在报错
  • 额外注意:连接URL里的驱动名如果带空格,需要做URL转义,把空格替换成+避免解析失败

修正后完整代码

from sqlalchemy import create_engine
import pyodbc 
import pandas as pd

SERVER = r'BEAST-ACTIVE\SQLEXPRESS'  # 原始字符串避免反斜杠转义
DATABASE = 'SQLTUTORIAL'
DRIVER = 'SQL Server'
USERNAME = 'abcd'
PASSWORD = 'abcd123'
# 修正连接前缀,转义驱动名空格
DATABASE_CONNECTION = f'mssql+pyodbc://{USERNAME}:{PASSWORD}@{SERVER}/{DATABASE}?driver={DRIVER.replace(" ", "+")}'

engine = create_engine(DATABASE_CONNECTION)
connection = engine.connect()
data = pd.read_sql_query(
    """
    SELECT * from [SQLTUTORIAL].[dbo].[EmployeeDemographics] 
    order by [EmployeeID]
    """, 
    connection
)
print(data.dtypes)
data

额外排错提示

如果运行时提示找不到指定驱动,新建单元格执行下面的代码查看本机已安装的所有SQL Server驱动,替换代码里的DRIVER值即可:

import pyodbc
print(pyodbc.drivers())

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 01:54:23