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

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

本文介绍如何在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 相关产品和应用

全部下载

专题列表