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

Django导入Excel数据到MySQL数据库时出现“No module named 'jobportal'”错误的求助

Django导入Excel数据到MySQL数据库时出现“No module named 'jobportal'”错误的求助

嘿,我来帮你搞定这个问题!出现No module named 'jobportal'的核心原因很明确:你的Python脚本找不到Django项目的根目录,咱们一步步来修复,确保Excel数据能顺利导入MySQL:

1. 先确认脚本的摆放位置

首先得对齐你的项目结构,正常的Django项目应该是这样的层级:

jobportal/  # 最外层项目根目录
├── jobportal/  # 内层配置目录(包含settings.py)
│   ├── __init__.py
│   ├── settings.py
│   └── ...
├── jobs/  # 你的Jobs app目录
│   ├── models.py
│   └── ...
├── JobsData.xlsx  # 你的Excel文件
└── import_script.py  # 导入脚本必须放在这里!

你的导入脚本一定要放在最外层的jobportal目录下,和内层的配置目录(带settings.py的那个)同级。要是脚本放错了位置,Python肯定找不到jobportal模块。

2. 手动把项目根目录加入Python路径

如果脚本位置没问题,那大概率是Python没把项目根目录加到搜索路径里。咱们在脚本开头加几行代码补全路径:
在import os之前插入:

import sys
from pathlib import Path

# 获取脚本所在的项目根目录
BASE_DIR = Path(__file__).resolve().parent
sys.path.append(str(BASE_DIR))

这行代码会强制Python把项目根目录加入搜索范围,就能找到jobportal模块了。

3. 检查Django环境与依赖

  • 先确认os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'jobportal.settings')这行没错,内层的jobportal目录里确实有settings.py,而且文件名大小写完全匹配(Linux/macOS系统对大小写敏感,别写错)。
  • 还要确保装齐了所有依赖:
    运行pip install django pandas openpyxl,其中openpyxl是pandas读取xlsx格式Excel必须的依赖,少了它可能连Excel都读不了。
  • 提前确认Django和MySQL的连接配置是对的,打开settings.py里的DATABASES区块:
    DATABASES = {
        'default': {
            'ENGINE': 'django.db.backends.mysql',
            'NAME': '你的MySQL数据库名',
            'USER': 'MySQL用户名',
            'PASSWORD': 'MySQL密码',
            'HOST': 'localhost',
            'PORT': '3306',
        }
    }
    

4. 修复后的完整导入脚本

我把你的脚本做了优化,加上路径修复和Excel读取的兼容处理:

import sys
from pathlib import Path
import os
import django
import pandas as pd

# 手动添加项目根目录到Python搜索路径
BASE_DIR = Path(__file__).resolve().parent
sys.path.append(str(BASE_DIR))

# 初始化Django环境
os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'jobportal.settings')
django.setup()

from jobs.models import Job  

# 建议用相对路径,避免绝对路径的适配问题
excel_file = "./JobsData.xlsx"
# 指定openpyxl引擎,确保pandas能正常读取xlsx文件
data = pd.read_excel(excel_file, engine='openpyxl')

for index, row in data.iterrows():
    job = Job(
        title=row['title'],
        company=row['company'],
        job_type=row['job_type'],
        skills_required=row['skills_required'],
        description=row['description'],
        location=row['location'],
        date_posted=row['date_posted'],  
        experience_required=row.get('experience_required', None)  
    )
    job.save()

print("Data successfully inserted!")

最后几个关键提醒

  • 运行脚本前,必须先执行python manage.py migrate,把Job模型对应的表同步到MySQL里,不然会提示表不存在。
  • 确保Excel里的列名和Job模型的字段名完全匹配,比如Excel里的列叫title,脚本里的row['title']才能正确取值,大小写也要一致。
  • 如果还是有疑问,可以用Django Shell测试:在项目根目录运行python manage.py shell,输入from jobs.models import Job,如果能成功导入,说明环境没问题,回去检查脚本的位置和路径配置就行。

备注:内容来源于stack exchange,提问作者Sayan Ghorui

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.15 11:18:11