MST

星途 面试题库

面试题:Python中Flask与Django在数据库操作上的基础差异

请阐述在Python中,Flask和Django框架在数据库操作方面的基本特点与差异,例如在数据库连接建立、模型定义等方面的不同点。
45.0万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

Flask

  1. 数据库连接建立
    • Flask 本身不自带数据库连接管理,通常借助第三方扩展,如 Flask - SQLAlchemy。它的数据库连接配置相对灵活,可根据不同需求简单或复杂配置。例如,使用 Flask - SQLAlchemy 时,只需在初始化扩展时设置数据库 URI 即可:
    from flask import Flask
    from flask_sqlalchemy import SQLAlchemy
    
    app = Flask(__name__)
    app.config['SQLALCHEMY_DATABASE_URI'] ='sqlite:///test.db'
    db = SQLAlchemy(app)
    
  2. 模型定义
    • 当使用 Flask - SQLAlchemy,模型定义较为简洁直观。模型类继承自 db.Model,通过类属性定义表结构。例如:
    class User(db.Model):
        id = db.Column(db.Integer, primary_key = True)
        username = db.Column(db.String(80), unique = True, nullable = False)
        email = db.Column(db.String(120), unique = True, nullable = False)
    

Django

  1. 数据库连接建立
    • Django 有内置的数据库连接管理机制。在项目的 settings.py 文件中统一配置数据库连接信息,支持多种数据库(如 MySQL、PostgreSQL 等)。配置相对规范且集中,例如配置 MySQL 数据库:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': 'your_database_name',
            'USER': 'your_username',
            'PASSWORD': 'your_password',
            'HOST': '127.0.0.1',
            'PORT': '3306',
        }
    }
    
  2. 模型定义
    • Django 的模型定义遵循严格的类继承和元类设置。模型类继承自 models.Model,字段定义使用 models 模块下的各种字段类型。模型类中还可以通过 Meta 类定义表的元数据,如排序方式、表名等。例如:
    from django.db import models
    
    class User(models.Model):
        id = models.AutoField(primary_key = True)
        username = models.CharField(max_length = 80, unique = True)
        email = models.EmailField(unique = True)
    
        class Meta:
            ordering = ['username']
    

差异总结

  1. 数据库连接
    • Flask 依赖扩展建立数据库连接,更灵活;Django 有内置的统一配置方式,更规范和集中。
  2. 模型定义
    • Flask 的模型定义相对简洁,重点在定义字段;Django 的模型定义更复杂,除了字段定义,还可通过 Meta 类进行更多元数据设置,如排序、表名等,并且字段类型命名更明确(如 EmailField)。