Django ORM模型操作
阿新 • • 發佈:2020-11-28
Django連線MySQL
使用Django來操作MySQL,需要安裝一個驅動程式。驅動程式有多重選擇。比如pymysql以及mysqlclient,這裡我們使用mysqlclient,mysqlclient安裝非常簡單
pip install mysqlclient
Django配置連線資料庫,配置專案的 settings.py
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'devops', 'USER': 'root','PASSWORD': 'root', 'HOST': '127.0.0.1', 'PORT': 3306, 'OPTIONS': { 'init_command': 'SET default_storage_engine=INNODB;', }, } }
建立ORM模型
ORM模型一般都是放在app的models.py檔案中,每個app都可以擁有自己的模型。並且為這個模型要對映到資料庫中,那麼這個app必須放在settings.py的INSTALL_APP中。 建立在app01中建立模型如下
fromapp01.models.pydjango.db import models class Book(models.Model): title = models.CharField(max_length=32) price = models.DecimalField(max_digits=5, decimal_places=2) pub_date = models.DateField() publish = models.ForeignKey("Publish", on_delete=models.CASCADE) authors = models.ManyToManyField("Author") class Publish(models.Model): name = models.CharField(max_length=32) city = models.CharField(max_length=64) email = models.EmailField() class Author(models.Model): name = models.CharField(max_length=32) age = models.SmallIntegerField() au_detail = models.OneToOneField("AuthorDetail", on_delete=models.CASCADE) class AuthorDetail(models.Model): gender_choices = ( (0, "女"), (1, "男"), (2, "保密") ) gender = models.SmallIntegerField(choices=gender_choices) tel = models.CharField(max_length=32) addr = models.CharField(max_length=64) birthday = models.DateField()
在Django中,如果一個模型沒有定義主鍵,那麼會自動生成一個自動增長的int型別的主鍵,並且這個主鍵的名字叫做id
對映模型到資料庫中
- 在命令列中終端執行 pythonmanage.pymakemigrations <app_name>來生成遷移指令碼,不指定app,則是所有的app
- 同樣在命令列中,執行命令pythonmanage.pymigrate來將遷移指令碼對映到資料庫中
python manage.py makemigrations app01
python manage.py migrate
11