django模型系統一

django模型系統一python

模型基礎:mysql

1.django的ORMsql

ORM:對象關係映射,用python表達數據庫。shell

2.數據庫配置數據庫

安裝pymysqldjango

修改項目目錄下的__init__.pyapp

 

import pymysql
pymysql.install_as_MySQLdb()

 

手動建立一個當前項目的空的數據庫,準備一個有建立數據庫權限的用戶spa

settings配置:調試

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'crm' , #數據庫名
        'USER': 'admin',
        'PASSWORD':'ROOT110qwe',
        'HOST':'127.0.0.1',
        'PORT':'3306'
    }

3.模型的建立與映射對象

模型

就是django.db.models.Model的一個子類

模型定義在app文件夾下的models.py

建立:

from django.db import models

# Create your models here.
class Student(models.Model):
    name=models.CharField(verbose_name='姓名',max_length=20)
    age=models.SmallIntegerField(verbose_name='年齡',null=True)
    sex=models.SmallIntegerField(default=1)
    qq=models.CharField(max_length=20,null=True)
    phone=models.CharField(max_length=20,null=True)
    c_time=models.DateTimeField(verbose_name='建立時間')

 激活模型:

  註冊應用

  建立遷移 只是告訴django,咱們修改了模型,他不會操做數據庫

python manage.py makemigrations appname

  若是咱們想看咱們的更改會對數據庫產生什麼影響,咱們能夠看他大概會執行什麼sql語句

python manage.py sqlmigrate teacher 0001

  執行遷移操做數據庫,將對模型的改動應用到數據庫(底層就是執行sql)

python manage.py migrate appname

  模型映射到數據庫中是一張表,表名=appname_模型name   小寫

  執行上面的命令,到底幹了些什麼

    在app中查找遷移文件,而且去django_migrations表中查找,若是沒有執行的遷移文件,就去執行它。

    執行了遷移生成的sql語句

    若是成功,會在django_migrations表中增長一條記錄

4.簡單數據的增刪改查 

django調試環境

python manage.py shell

增:

#第一種方式:
In [4]: Student.objects.all()                                          
Out[4]: <QuerySet []>

In [5]: s=Student()                                                    

In [6]: s                                                              
Out[6]: <Student: Student object (None)>

In [7]: s.name='jonney'                                                

In [8]: s.age=18                                                       

In [9]: Student.objects.all()                                          
Out[9]: <QuerySet []>

In [10]: s.save() #save以後纔會寫到數據庫

#第二種方式
stu=Student.objects.create(name='jenny',age=18)   #直接建立

刪:

#刪一條
In [14]: stu.delete() Out[14]: (1, {'teacher.Student': 1})

#刪多條

In [9]: Student.objects.filter(sex=1).delete()

Out[9]: (2, {'teacher.Student': 2})

#刪全部

Student.objects.all().delete()

改:

#改一條
In [18]: s.age=16                                                      

In [19]: s.save()   

#改多條:

In [7]: Student.objects.all().update(sex=0)

Out[7]: 2

查:

#查全部In [2]: Student.objects.all()Out[2]: <QuerySet [<Student: jonney>, <Student: jenny>]>

#查一條
In [3]: Student.objects.get(pk=1)                                      
Out[3]: <Student: jonney>#get返回的是對象,若是反悔了多值,就會報錯,返回零個也報錯,只能返回一個
#帶條件In [4]: res=Student.objects.filter(sex=1)     #where sex=1In [5]: res Out[5]: <QuerySet [<Student: jonney>, <Student: jenny>]>
相關文章
相關標籤/搜索