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

如何通过Django inspectdb导出MSSQL数据库所有架构的表模型

解决方案

问题原因

Django MSSQL后端默认执行inspectdb时仅扫描dbo默认架构下的表,你剩余3张表分属model、plan两个自定义架构,因此没有被导出。

操作方法

你可以任选以下一种方式实现全表导出:

方式1:临时指定架构导出(适合单次导出需求)

分批次追加导出不同架构的表到模型文件:

  1. 你已经完成默认dbo架构表的导出
  2. 追加导出model架构下的表:
python manage.py inspectdb --schema=model >> models.py
  1. 追加导出plan架构下的表:
python manage.py inspectdb --schema=plan >> models.py

注意使用>>追加写入符,不要用>覆盖已有内容。

方式2:配置默认扫描架构(适合长期开发需求)

修改settings.py中的数据库配置,在OPTIONS中添加inspectdb_schemas参数指定所有需要扫描的架构:

DATABASES = {
    'default': {
        "ENGINE": "mssql",
        "NAME": "ips_db",
        "USER": "sa",
        "PASSWORD": "***",
        "HOST": "***",
        "PORT": "1433",
        "OPTIONS": {
            "driver": "ODBC Driver 17 for SQL Server",
            # 加入所有需要扫描的架构名
            "inspectdb_schemas": ["dbo", "model", "plan"],
        },
    },
}

配置完成后直接执行原有导出命令即可一次性导出所有架构下的表:

python manage.py inspectdb > models.py

注意事项

  • 如果执行指定schema的命令时报错,可先升级Django MSSQL驱动版本:pip install --upgrade django-mssql-backend
  • 导出的模型Meta类中会自动携带完整架构表名(例如db_table = "[model].[three_table]"),无需手动修改,Django可直接识别
  • 不要修改自动生成的managed = False配置,避免执行迁移时改动原数据库的表结构

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.23 21:36:05