前后端入门-django 操作数据库删除、新建、重建数据表杂记

文章详细介绍了在Django框架下如何管理数据库表,包括删除表、重建表、新建表以及如何同步已有数据表到Django模型中,涉及的关键步骤包括修改模型、执行makemigrations和migrate命令,并强调了managed和db_table属性在处理已有数据表时的重要性。

1 表删除

# 先到数据库把表删掉:drop table
drop table
# 2.注释Django中对应的Model

# 3.注释Django中对应app/migrations/0001_initial.py 文件中的operations中的migrations.CreateModel 部分

# 4.执行以下命令
python manage.py makemigrations

python manage.py migrate --fake

2 表重建

1.去掉Django中对应的models.py中的注释

2.去掉Django中对应app/migrations/0001_initial.py 文件中的operations中的migrations.CreateModel 部分注释

3.执行以下命令:

python manage.py makemigrations

python manage.py migrate

3 表新建

1.Django中对应的models.py中编写
class Tests(models.Model):
    title = models.CharField(max_length=32)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    author = models.CharField(max_length=32)
    publish = models.CharField(max_length=32)
    
    class Meta:
        db_table = 'cate'		# 自定义表名

2.执行以下命令:

python manage.py makemigrations

python manage.py migrate

4 表同步(数据库已有数据表同步到django中使用)

该场景可以使用已有数据表,或对已有数据表不在创建,直接使用。

1.查看数据库已有数据信息
python manage.py inspectdb
2.将已有数据表对应的Model信息截取
class AppDrfBooksTests(models.Model):
    id = models.BigAutoField(primary_key=True)
    title = models.CharField(max_length=32)
    price = models.DecimalField(max_digits=5, decimal_places=2)
    author = models.CharField(max_length=32)
    publish = models.CharField(max_length=32)

    class Meta:
        managed = False					# 关键参数 
        db_table = 'app_drf_books_tests'
# Meta 参数     
managed = False 
默认为True,意思是Django在migrate命令中创建合适的数据表,并且会在 flush 管理命令中移除它们。
模型含有指向其他未被管理模型的ManyToManyField,那么多对多连接的中介表也不会被创建。
db_table = 'app_drf_books_tests'
指定表名

3.将类信息放至Modle文件中models.py

4.执行以下命令:

python manage.py makemigrations

python manage.py migrate

5 migrations 文件重置管理

python manage.py migrate 库表未更新时,使用以下方法重新更新库表。

# django 的 migrations 文件重置管理
python manage.py migrate --fake <app> zero
# 如
python manage.py migrate --fake app_drf_books zero

注:python manage.py migrate –-fake-inital 这个命令是对所有 app 操作
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值