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'
解决步骤
修正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})修复代码中的其他细节错误
- 拼写修正:
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;"""
- 拼写修正:
可选:简化连接方式
可跳过URL构造步骤,直接用连接字符串创建engine:engine = create_engine(f"mssql+pyodbc://@{SERVER_NAME}/{DATABASE_NAME}?trusted_connection=yes&driver=SQL+Server")
内容的提问来源于stack exchange,提问作者maria
相关产品推荐
相关产品推荐

