1. 程式人生 > 實用技巧 >Django ORM模型操作

Django ORM模型操作

Django連線MySQL

使用Django來操作MySQL,需要安裝一個驅動程式。驅動程式有多重選擇。比如pymysql以及mysqlclient,這裡我們使用mysqlclientmysqlclient安裝非常簡單

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模型一般都是放在appmodels.py檔案中,每個app都可以擁有自己的模型。並且為這個模型要對映到資料庫中,那麼這個app必須放在settings.pyINSTALL_APP中。 建立在app01中建立模型如下

from
django.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()
app01.models.py

在Django中,如果一個模型沒有定義主鍵,那麼會自動生成一個自動增長的int型別的主鍵,並且這個主鍵的名字叫做id

對映模型到資料庫中

  1. 在命令列中終端執行 pythonmanage.pymakemigrations <app_name>來生成遷移指令碼,不指定app,則是所有的app
  2. 同樣在命令列中,執行命令pythonmanage.pymigrate來將遷移指令碼對映到資料庫中
python manage.py makemigrations app01
python manage.py migrate

11