当前位置:网站首页>[ORM framework]

[ORM framework]

2022-07-07 10:07:00 chuntian_ tester

Django ORM frame

Definition

  • Map classes to data tables
  • Through classes and objects, you can manipulate the data in its corresponding data table (CRUD)

step

  • Configure the database connection information
    - Create databases and users
    - Configuration database
    - install mysqlclient

  • In the subapplication of models.py Define model classes in

    • Generally in sub applications models.py Define model classes in
    • Model classes must inherit Model Class or Model Subclasses of
    • Define attributes in the model class ( It has to be for Field Subclass ), Equivalent to fields in the data table
    • CharField–> varchar
    • IntegerField–> integer
    • BooleanField–>bool
class Animal(models.Model):
   name = models.CharField(max_length=32)
   age = models.IntegerField()
   gender = models.BooleanField()
   
   class Meta:
       managed = True

Examples

1. Define model classes

class Projects(models.Model):
    """ max_length: Must pass parameters  verbose_name: When rendering forms , There will be a Chinese description below : Project name ;  The background management site will also add a description to the current field  help_text: stay api The interface document will be used as Chinese description information  unique=True:  Represents setting unique constraints on a field , The default is False default: Specify default  TextField(): Support long text  blank=True: Allow empty string ,DRF Valid only when deserializing input  null = Tru: Allow for null,DRF Valid only when deserializing input  DateTimeField Appoint auto_now_add=True, When creating a record, the time will be automatically created as the value of this field , Subsequent updates will not change this value  DateTimeField Appoint auto_now=True, When updating a record , The time of updating the record will be automatically taken as the value of this field  """
    name = models.CharField(max_length=50,
                            verbose_name=' Project name ',
                            help_text=' Project name ',
                            unique=True)
    leader = models.CharField(max_length=10,
                              verbose_name=' Project leader ',
                              help_text=' Project leader ')
    # default=xxx Specify default 
    is_execute = models.BooleanField(verbose_name=' Whether to start the project ',
                                     help_text=' Whether to start the project ',
                                     default=False)
    # TextField() Support long text 
    # blank=True, Allow empty string  
    # null = True, Allow for null
    desc = models.TextField(verbose_name=' Project description information ',
                            help_text=' Project description information ',
                            blank=True, null=True, default='')
    # DateTimeField Appoint auto_now_add=True, When creating a record, the time will be automatically created as the value of this field , Subsequent updates will not change this value 
    create_time = models.DateTimeField(auto_now_add=True, 
                                       verbose_name=' Creation time ', 
                                       help_text=' Creation time ')
    # DateTimeField Appoint auto_now=True, When updating a record , The time of updating the record will be automatically taken as the value of this field 
    update_time = models.DateTimeField(auto_now=True, 
                                       verbose_name=' Update time ', 
                                       help_text=' Update time ')
    #  Modify the meta information of the model class 
    class Meta:
        # #  Whether it is managed 
        # managed = True
        # db_table: Specified table name 
        db_table = 'tb_projects'

2. transfer

terminal Execute the command in the project root :

#  Migrate all sub applications 
python manage.py makemigrations
python manage.py migrate
#  Migrate the specified sub application 
python manage.py makemigrations  Subapplication name 
python manage.py migrate  Subapplication name 

 Insert picture description here
The default name of the generated data table is : Subapplication name _ The model class name is lowercase

#  View the generated migration script native sql sentence 
python manage.py sqlmigrate  Subapplication name (projects)  Migration script name (0002_projects)

 Insert picture description here

  • Complete the database addition, deletion, modification and query operations through classes and objects

ORM Object composition

a. database :  You need to manually create the database in advance 
b. Data sheet : And ORM In the frame models.py Model classes in correspond one by one 
c. Field : Class attributes in model classes 
d. Record : Similar to multiple instances of model classes 

Global profile settings.py Middle configuration database

 Insert picture description here

ORM Modify the existing field names in the table

When we modify a field name or add a new field in the online database , Before deleting fields , All existing data should be backed up , Can be cold standby , It can be hot standby ;

  • Cold standby :mysqldumps Orders can be made for cold standby

ORM Modify existing fields :

  • Modify the field name in the model class ( Generally, it can't be modified id Primary key )

  • Re execute the migration script

      - python manage.py makemigrations  Subapplication name 
      - python manage.py migrate  Subapplication name 
    

 Modify the existing field name in the data table
 Execute the migration command
 View database fields

原网站

版权声明
本文为[chuntian_ tester]所创,转载请带上原文链接,感谢
https://yzsam.com/2022/188/202207070717235654.html