models的編寫
- models中的每個class都稱之為模型類(Model) 或 實體類(Entry)
- models中的每個實體類,必須繼承自models.Model
1、通過ORM建立資料表
- 1、在models 檔案中定義一個類,如下
from django.db import models
# Create your models here.
class Publisher(models.Model):
name = models.CharField(max_length=20)
address = models.CharField(max_length=50)
city = models.CharField(max_length=20)
country = models.CharField(max_length=20)
website = models.URLField()
- 2、在指令提示符中輸入python manage.py makemigrations,此時在對應應用的migrations檔案夾中出現一個0001_initial檔案
# Generated by Django 2.1.8 on 2019-05-07 08:06
from django.db import migrations, models
class Migration(migrations.Migration):
initial = True
dependencies = [
]
operations = [
migrations.CreateModel(
name='Publisher',
fields=[
('id', models.AutoField(auto_created=True, primary_key=True, serialize=False, verbose_name='ID')),
('name', models.CharField(max_length=20)),
('address', models.CharField(max_length=50)),
('city', models.CharField(max_length=20)),
('country', models.CharField(max_length=20)),
('website', models.URLField()),
],
),
]
- 3、再在指令提示符中執行python manage.py migrate,此時資料庫自動建立一個表 注意:Django中的 CharField 資料字段對應SQL中的 varchar 類型的資料
2、Django提供的資料字段以及字段選項
- 1、常用資料字段(Field Types)
- BooleanField() 布爾類型
- CharField() 字元串類型
- DateField() 日期類型
- DateTimeField() 日期時間類型
- FloatField() 浮點數類型
- FileField() 字元串類型-檔案位址
- EmailField() 字元串類型
- IntegerField() 整數類型
- ImageField() 字元串類型- 圖檔位址
- URLField() 字元串類型-網址
- TextField() 字元串類型
- DecimalField() 浮點數類型
- 2、常用資料選項(Field Options)
- null :是否為空name = CharField(max_length=30, null=True),允許為空
- default:設定預設值name = CharField(max_length=30, default=“保密”)設定預設值為保密
class Author(models.Model):
name = models.CharField(max_length=20) # varchar(20)
age = models.IntegerField() # int
email = models.EmailField(null=True) # varchar(254)允許為空
class Book(models.Model):
title = models.CharField(max_length=30) # varchar(30)
publication_date = models.DateField(default=datetime.datetime.now()) # date
參考文檔(字段類型與字段選項)
3、資料版本的切換
- python manage.py migrate 應用名稱 版本号
- 例如:python manage.py migrate music 0002,重新執行0002的日志檔案
4、資料的導出
- mysqldump -u root -p 資料庫名 > 檔案名.sqi(導出所有的表結構和資料)
- mysqldump -u root -p -d 資料庫名 > 檔案名.sql(導出表結構,不導資料)
5、資料的導入
- mysql -u root -p 資料名 < 檔案名.sql (資料庫名必須先存在)
6、通過資料庫自動導出models檔案
- python manage.py inspectdb > 檔案名.py