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

create_engine与app.config['SQLALCHEMY_DATABASE_URI']的区别是什么?

create_engine函数和app.config['SQLALCHEMY_DATABASE_URI']配置项看起来功能相同,它们只是两种不同的数据库连接方式吗?

核心区别与关联

  • create_engine 是SQLAlchemy原生核心方法
    它是SQLAlchemy库的底层核心函数,作用是直接创建Engine对象——这个对象是SQLAlchemy与数据库交互的核心入口,负责管理连接池、执行原生SQL语句等。这种方式适合不需要Flask框架的独立脚本、命令行工具或非Web项目,直接通过原生SQL操作数据库。

    示例代码:

    from sqlalchemy import create_engine
    from sqlalchemy import text
    
    engine = create_engine("postgresql+psycopg2://scott:tiger@localhost:5432/mydatabase")
    
    with engine.connect() as connection:
        result = connection.execute(text("select username from users"))
        for row in result:
            print("username:", row["username"])
    
  • SQLALCHEMY_DATABASE_URI 是Flask-SQLAlchemy的配置项
    Flask-SQLAlchemy是SQLAlchemy针对Flask框架的封装扩展,这个配置项用于指定数据库连接的URI。当你调用db.init_app(app)完成初始化时,Flask-SQLAlchemy会自动基于这个URI底层调用create_engine创建Engine对象,并将其封装到Flask的上下文体系中,提供更贴合Web开发的ORM操作、自动上下文管理等功能(比如示例中的db.create_all()自动创建表,以及后续基于模型的CRUD操作)。

    你的Flask应用示例代码:
    app.py

    from project import create_app
    
    app = create_app()
    
    if __name__ == '__main__':
        app.run()
    

    init.py

    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    db = SQLAlchemy()
    
    def create_app():
        app = Flask(__name__)
        app.config['SQLALCHEMY_DATABASE_URI'] = 'mysql+pymysql://username:password@server/db'
    
        db.init_app(app)
        
        with app.app_context():
            from .views import views
            from .auth import auth       
            from .models import users
    
            app.register_blueprint(views, url_prefix="/")
            app.register_blueprint(auth, url_prefix="/")
    
            db.create_all()
    
            return app
    

总结

两者并非完全独立的连接方式,而是封装层级不同:create_engine是数据库连接的底层实现,SQLALCHEMY_DATABASE_URI是Flask-SQLAlchemy提供的上层配置入口,最终依赖前者创建数据库连接引擎。前者适合直接执行原生SQL的场景,后者适合在Flask项目中使用ORM进行数据库操作,享受框架带来的集成便捷性和上下文管理能力。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.09 12:20:32