python/Django模型/数据库迁移/创建数据库表

1."数据库迁移"(Database Migration):

在Django框架中,数据库迁移是将你的模型(即定义在models.py文件中的数据库表结构)变更同步到数据库中的过程。这包括创建新表、修改现有表结构(如添加或删除字段)以及执行其他数据库结构变更。

2.流程:

  1. 定义模型 :在Django应用的models.py文件中定义或修改模型类。

  2. 生成迁移文件 :运行python manage.py makemigrations命令,Django会自动检测到模型的变化,并为这些变化创建一个新的迁移文件。这个文件包含了将模型变更应用到数据库所需的所有操作。

  3. 应用迁移 :运行python manage.py migrate命令,Django会应用所有未执行的迁移,更新数据库结构以匹配模型定义。

3.例子

在创建的应用(app)的models.py文件内编写。

python 复制代码
from django.db import models

# Create your models here.
class Sight(models.Model):
    """ 景点基础信息 """
    name = models.CharField('名称', max_length=64)
    desc = models.CharField('描述', max_length=256)
    main_img = models.ImageField('主图', upload_to='%Y%m/sight/', max_length=256)
    banner_img = models.ImageField('详情主图', upload_to='%Y%m/sight/', max_length=256)
    content = models.TextField('详细')
    score = models.FloatField('评分', default=5)
    min_price = models.FloatField('最低价格', default=0)
    province = models.CharField('省份', max_length=32)
    city = models.CharField('市区', max_length=32)
    area = models.CharField('区/县', max_length=32, null=True)
    town = models.CharField('乡镇', max_length=32, null=True)

    is_top = models.BooleanField('是否为精选景点', default=False)
    is_hot = models.BooleanField('是否为热门景点', default=False)

    is_valid = models.BooleanField('是否有效', default=True)
    created_at = models.DateTimeField('创建时间', auto_now_add=True)
    updated_at = models.DateTimeField('修改时间', auto_now=True)

    class Meta:
        db_table ='sight'
        ordering = ['-updated_at']

注意:

要使用这个模型,你需要确保你的Django项目已经配置好了数据库,并且你已经创建了相应的数据库表。

你可以通过以下命令来创建和应用迁移

python 复制代码
python manage.py makemigrations
python manage.py migrate
相关推荐
程序员三明治5 分钟前
Python编辑器的安装及配置(Pycharm、Jupyter的安装)从0带你配置,小土堆视频
python·pycharm·编辑器
理想国的女研究僧6 分钟前
Jupyter Notebook操作指南(1)
ide·python·学习·jupyter
酷飞飞14 分钟前
PyQt 界面布局与交互组件使用指南
python·qt·交互·pyqt
春时似衿里17 分钟前
jmeter配置数据库连接步骤
数据库·jmeter
喵喵爱自由26 分钟前
Ubuntu 24.04 Server 版系统安装及配置
数据库·ubuntu
hzzzzzo029 分钟前
微服务保护全攻略:从雪崩到 Sentinel 实战
数据库·微服务·sentinel
GilgameshJSS32 分钟前
【学习K230-例程19】GT6700-TCP-Client
网络·python·网络协议·学习·tcp/ip
yuanpan35 分钟前
python标准库有哪些模块,简单总结下。
开发语言·python
程序员杰哥1 小时前
什么是Jmeter? Jmeter工作原理是什么?
自动化测试·软件测试·python·测试工具·jmeter·职场和发展·测试用例