Django 数据库表生成与修改

manage.py脚本使用

manage.py是每个django项目中自动生成的一个用于管理项目的脚本文件。需要通过python命令执行。manage.py接受的是Django提供的内置命令。

执行方式:python manage.py 内置命令

内置命令包含:

  • makemigrations:创建更改文件(数据库)

  • migrate:将生成的py文件应用到数据库(数据库)

  • inspectdb:反向生成models文件

  • runserver:运行服务器:默认端口为8000,默认localhost为127.0.0.1

  • startapp appname:新建App

  • startproject projectname :新建Django project

更多命令使用:

python manage.py 可以看到详细的列表,在忘记了名称的时候特别有用

数据库表正向生成

根据models文件自动创建数据库表

python manage.py makemigrations
python manage.py migrate

makemigrations

作用:根据检测到的模型创建新的迁移。迁移的作用,更多的是将数据库的操作,以文件的形式记录下来,方便以后检查、调用、重做等等

执行命令后:相当于在该app下建立migrations目录,并记录下所有关于models.py的改动,比如0001_initial.py。(这个改动还没有同步到数据库)

 

migrate

作用:使数据库状态与当前模型集和迁移集同步。就是将对数据库的更改,主要是数据表设计的更改,在数据库中真实执行。例如,新建、修改、删除数据表,新增、修改、删除某数据表内的字段等等。

执行命令后:django是根据migrations下面的脚本文件来生成数据表,models中的修改会同步到数据库

如何区分执行migrations下的哪个文件?

django有一张django_migrations表,表中记录了已经执行的脚本,那么表中没有的就是还没执行的脚本,执行migrate命令的时候就只执行表中没有记录的那些脚本。

 

注意:

1.注意执行过程中的报错提示信息

2.有时在执行migrate的时候如果发现没有生成相应的表,可以看看在django_migrations表中是否有脚本执行记录。可以删除django_migrations表中的记录和数据库中对应的表,然后重新执行即可。

 

数据库表反向生成

根据已有的数据库表自动生成models文件

python manage.py inspectdb     #默认数据库
python manage.py inspectdb --database databasename  #制定数据库

检查DATABASE_NAME数据库中的表并为每个表打印模型类,修改managed = True,告诉django可以对数据库进行操作

备注:python3不支持Mysqldb,但是框架在执行时默认使用的是MySQLdb,需要在app下的init文件增加下述命令

import pymysql
pymysql.install_as_MySQLdb()

 

参考:

https://www.cnblogs.com/yushengzhou/p/9609499.html

https://www.jianshu.com/p/8d3e76197496

 

  • 2
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Django中,我们可以使用ORM(对象关系映射)框架来创建数据库。ORM框架将Python类映射到数据库中,并提供了对数据库的操作。 要使用ORM框架创建数据库,我们需要执行以下步骤: 1. 在Django项目中的models.py文件中定义我们的数据模型类,如下所示: ```python from django.db import models class Book(models.Model): title = models.CharField(max_length=200) author = models.CharField(max_length=100) publication_date = models.DateField() ``` 在上面的代码中,我们定义了一个Book类,它继承了models.Model类,并定义了三个属性:title、author和publication_date。这些属性将映射到数据库的列。 2. 接下来,我们需要在Django项目的settings.py文件中配置数据库连接信息。我们需要指定数据库类型、主机名、端口号、数据库名称、用户名和密码。例如: ```python DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'mydatabase', 'USER': 'mydatabaseuser', 'PASSWORD': 'mypassword', 'HOST': 'localhost', 'PORT': '3306', } } ``` 在上面的代码中,我们指定了MySQL数据库的连接信息。如果您使用的是其他数据库,您需要相应地更改这些信息。 3. 接下来,我们需要创建迁移文件。迁移文件是用于将数据模型类映射到数据库文件。我们可以使用以下命令创建迁移文件: ```python python manage.py makemigrations ``` 4. 最后,我们需要执行迁移,将模型类映射到数据库中。我们可以使用以下命令执行迁移: ```python python manage.py migrate ``` 执行完上述命令后,Django将自动在MySQL数据库中创建名为“myapp_book”的,该包含三个列:title、author和publication_date。 总之,使用Django ORM框架可以方便地在MySQL数据库中创建数据。只需要定义模型类,配置数据库连接信息,创建迁移文件,执行迁移即可。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值