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

SQLAlchemy报错:'URL'对象无'create'属性,求解决方法

SQL Server连接报错:AttributeError: type object 'URL' has no attribute 'create'

问题代码

import sqlalchemy as sa
from sqlalchemy import create_engine
import ulrllib
import pyodbc as odbc
import pandas as pd
from sqlalchemy.engine.url import URL

SERVER_NAME = 'H46'
    
DATABASE_NAME = ‘ris’
    
connection_string = f"""
    
Driver = {{SQL Server}};
    
Server = {SERVER_NAME};
    
Database = {DATABASE_NAME};
    
Trusted_Connection = yes;
    
 """
    
     
connection_url = URL.create(mssql+pyodbc, query={"odbc_connect": connection_string})
    
engine = create_engine(connection_url, module= odbc)

报错信息

AttributeError                            Traceback (most recent call last)

<ipython-input-21-7763d5cbd008> in <module>




----> 1 connection_url = URL.create(mssql+pyodbc, query={"odbc_connect": connection_string})

      2 engine = create_engine(connection_url, module= odbc)

AttributeError: type object 'URL' has no attribute 'create'

解决步骤

  1. 修正URL构造逻辑
    URL.create()是SQLAlchemy 1.4及以上版本新增的方法,若使用旧版本,需改用传统URL构造函数:

    connection_url = URL(
        'mssql+pyodbc',
        query={'odbc_connect': connection_string}
    )
    

    若升级SQLAlchemy到1.4+,则需补全mssql+pyodbc的字符串定义(原代码中该变量未声明):

    connection_url = URL.create("mssql+pyodbc", query={"odbc_connect": connection_string})
    
  2. 修复代码中的其他细节错误

    • 拼写修正:import ulrllib改为import urllib
    • 引号替换:DATABASE_NAME = ‘ris’改为DATABASE_NAME = 'ris'(替换中文引号为英文引号)
    • 清理连接字符串冗余换行:
      connection_string = f"""Driver={{SQL Server}};Server={SERVER_NAME};Database={DATABASE_NAME};Trusted_Connection=yes;"""
      
  3. 可选:简化连接方式
    可跳过URL构造步骤,直接用连接字符串创建engine:

    engine = create_engine(f"mssql+pyodbc://@{SERVER_NAME}/{DATABASE_NAME}?trusted_connection=yes&driver=SQL+Server")
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.28 14:13:21