Django修改App名称与数据表重命名迁移方案

青禾
青禾
发布时间:2026-10-12| 2人浏览过
原创

本文介绍如何在Django项目中安全地将App名称及对应的数据库表名从大写改为小写。通过生成批量SQL语句直接修改MySQL表名,并配合修改代码中的模型引用、URL配置及Settings设置,实现无需执行Django migrate命令即可完成名称变更,确保ORM映射正确。

项目初期的架构设计至关重要。在Django框架中,建议将App的名称统一设置为小写,以符合规范并避免潜在问题。

当前博客项目包含两个App:Blog和JiaBlog。为了视觉上的统一与美观,计划将其重命名为小写的oblog和blog。这一操作的核心难点在于如何处理Django ORM与底层数据表之间的映射关系。

最终目标是实现从JiaBlog.articles到blog.articles的完整映射。在此过程中,不建议直接使用Django的migrate命令进行迁移,因为直接迁移可能导致数据表结构混乱或迁移历史冲突。

为解决此问题,可以编写一段SQL语句,用于批量生成MySQL中修改表名的命令。

SELECT
 CONCAT(
 'ALTER TABLE ',
 table_name,
 ' RENAME TO b',
 substring(table_name, 5),
 ';'
 )
FROM
 information_schema.tables Where table_name LIKE 'JiaBlog_%';

执行上述SQL后,即可批量生成所需的表名修改语句。

ALTER TABLE JiaBlog_Love RENAME TO blog_Love;
ALTER TABLE JiaBlog_area RENAME TO blog_area;
ALTER TABLE JiaBlog_articlebodypic RENAME TO blog_articlebodypic;
ALTER TABLE JiaBlog_articles RENAME TO blog_articles;
ALTER TABLE JiaBlog_articles_tags RENAME TO blog_articles_tags;
ALTER TABLE JiaBlog_blogauth RENAME TO blog_blogauth;
ALTER TABLE JiaBlog_blogrole RENAME TO blog_blogrole;
ALTER TABLE JiaBlog_bloguser RENAME TO blog_bloguser;
ALTER TABLE JiaBlog_bloguser_role RENAME TO blog_bloguser_role;
ALTER TABLE JiaBlog_blogusercollect RENAME TO blog_blogusercollect;
ALTER TABLE JiaBlog_category RENAME TO blog_category;
ALTER TABLE JiaBlog_codemodel RENAME TO blog_codemodel;
ALTER TABLE JiaBlog_comment RENAME TO blog_comment;
ALTER TABLE JiaBlog_daynumber RENAME TO blog_daynumber;
ALTER TABLE JiaBlog_genre RENAME TO blog_genre;
ALTER TABLE JiaBlog_graduation RENAME TO blog_graduation;
ALTER TABLE JiaBlog_hits RENAME TO blog_hits;
ALTER TABLE JiaBlog_honour RENAME TO blog_honour;
ALTER TABLE JiaBlog_jia RENAME TO blog_jia;
ALTER TABLE JiaBlog_jiafile RENAME TO blog_jiafile;
ALTER TABLE JiaBlog_message RENAME TO blog_message;
ALTER TABLE JiaBlog_movie RENAME TO blog_movie;
ALTER TABLE JiaBlog_note RENAME TO blog_note;
ALTER TABLE JiaBlog_paper RENAME TO blog_paper;
ALTER TABLE JiaBlog_params RENAME TO blog_params;
ALTER TABLE JiaBlog_project RENAME TO blog_project;
ALTER TABLE JiaBlog_recruinfo RENAME TO blog_recruinfo;
ALTER TABLE JiaBlog_recruitment RENAME TO blog_recruitment;
ALTER TABLE JiaBlog_resume RENAME TO blog_resume;
ALTER TABLE JiaBlog_sysrecord RENAME TO blog_sysrecord;
ALTER TABLE JiaBlog_tag RENAME TO blog_tag;
ALTER TABLE JiaBlog_teacher RENAME TO blog_teacher;
ALTER TABLE JiaBlog_userip RENAME TO blog_userip;
ALTER TABLE JiaBlog_version RENAME TO blog_version;
ALTER TABLE JiaBlog_visitnumber RENAME TO blog_visitnumber;

接下来,按照以下步骤完成其余配置修改: 1. 将项目中的App文件夹名称修改为新的名称。 2. 在App目录下的views.py文件中,更新对models的引用路径。 3. 在App目录下的urls.py文件中,更新对App视图模块的引用。 4. 修改项目根目录下的settings.py文件,更新INSTALLED_APPS中的App名称。 5. 修改项目根目录下的urls.py文件,更新include语句中引用的App名称。

至此,Django修改App名称及数据表迁移的方案已全部介绍完毕。如需了解更多相关技术细节,可搜索本站历史文章或继续阅读后续内容。感谢大家的支持!

相关标签:

免责声明:本文内容仅供参考,不代表本站观点。转载或引用请注明出处。

Python 相关产品和应用

全部下载
Selenium

Selenium

4.51.0 · Windows

用于浏览器自动化和 Web 测试的 Python 工具。

scikit-learn

scikit-learn

1.9.1 · Windows

常用 Python 机器学习算法与模型评估工具库。

Black

Black

26.10.1 · Windows

强调一致性的 Python 自动代码格式化工具。

Ruff

Ruff

0.17.1 · macOS

由 Rust 编写的高速 Python 代码检查和格式化工具。

pytest

pytest

9.1.1 · Windows

简洁而强大的 Python 自动化测试框架。

FastAPI

FastAPI

0.146.0 · Windows

高性能 Python API 框架,支持类型提示和自动接口文档。

Flask

Flask

3.1.3 · Windows

轻量灵活的 Python Web 应用框架。

Django

Django

6.1.2 · Windows

成熟的 Python Web 框架,适合构建内容站点和业务系统。

Spyder

Spyder

6.1.7 · Windows

面向科学计算与数据分析的 Python 集成开发环境。

SciPy

SciPy

1.18.1 · Windows

面向科学、工程和技术计算的 Python 算法库。