Django ORM------Mysql

Posted ld1977

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Django ORM------Mysql相关的知识,希望对你有一定的参考价值。

ORM操作

select * from tb where id > 1

#对应关系

models.tb.objects.filter(id__gt=1)

models.tb.objects.filter(id=1)

models.tb.objects.filter(id__lt=1)

创建类

1.DB-first:根据类自动创建数据库表

    #models.py

settings.py中要注册app

 默认生成的表名为:#app01_userinfo 

from django.db import models
#create your models here.
class UserInfo(models.Model):
    #django会默认创建一个id列,自增,主键
    #用户名列,字符串类型,指定长度
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=64)


项目的settings->INSTALLED_APPS=[]中,添加app,如图:


然后命令行执行:
python manage.py makemigrations
python manage.py migrate #根据生成的py文件,直接生成数据库
View Code

项目settings.py->DATABASE={}中设置使用的数据库:默认连接sqlite

连接mysql配置文件:

DATABASES = {
    \'default\': {
    \'ENGINE\': \'django.db.backends.mysql\',
    \'NAME\':\'dbname\',
    \'USER\': \'root\',
    \'PASSWORD\': \'xxx\',
    \'HOST\': \'\',
    \'PORT\': \'\',
    }
}
View Code

***********注意***********

Django默认用Mysqldb模块连接mysql,所以会报错,应该修改为pymysql连接

在项目的__init__.py文件中,添加:
import pymysql
pymysql.install_as_MySQLdb()

 models.py中增、删、改、查sqlite:

1.增

from django.db import models
class UserInfo(models.Model):
    #id列、自增、主键
    #用户名列,字符串类型,指定长度
    username = models.CharField(max_length=32)
    password = models.CharField(max_length=64)
models.py
from app01 import models
def orm(request): 
    models.UserInfo.objects.create(               #往表中插入数据
        username = \'root\'
        password = ‘123’
    )

    return HttpResponse(\'orm\')

创建数据的第二种方法
def orm(request):
 
        obj = models.UserInfo(username = \'alex\',  password = ‘123’)
     
        obj.save()         #往表中插入数据
       
    return HttpResponse(\'orm\')

第三种方法:
def orm(request): 
    dic={\'username\':\'Eric\',\'password\':\'666\'}
    models.UserInfo.objects.create(**dic)         #往表中插入数据
    

    return HttpResponse(\'orm\')
View Code

2.查

result = models.UserInfo.objects.all() #返回表里的所有数据

print(result) #result为QuerySet类型,由django生成,即列表

for row in result:
    print(row.id,row.username,row.password)

或者:

result =  models.UserInfo.objects.filter(username=\'root\')
查询

3.删除

models.UserInfo.objects.all().delete() #删除所有
models.UserInfo.objects.filger(id=4).delete() #删除id为4的记录
View Code

4.更新

models.UserInfo.objects.all().update(password=\'6669\')
models.UserInfo.objects.filter(id=3).update(password=\'69\')
更新

 

 

 2.Code-first:根据类对数据库表中的数据进行各种操作

一、概述

1、什么是数据库 ?

 答:数据的仓库,如:在ATM的示例中我们创建了一个 db 目录,称其为数据库

2、什么是 MySQL、Oracle、SQLite、Access、MS SQL Server等 ?
 答:他们均是一个软件,都有两个主要的功能:

  • a. 将数据保存到文件或内存
  • b. 接收特定的命令,然后对文件进行相应的操作

    PS:如果有了以上软件,无须自己再去创建文件和文件夹,而是直接传递 命令 给上述软件,让其来进行文件操作,他们统称为数据库管理系统(DBMS,Database Management System)

3、什么是SQL ?
 答:上述提到MySQL等软件可以接受命令,并做出相应的操作,由于命令中可以包含删除文件、获取文件内容等众多操作,对于编写的命令就是是SQL语句。SQL

以上是关于Django ORM------Mysql的主要内容,如果未能解决你的问题,请参考以下文章

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段

Django REST框架--认证和权限

如何在 Django 中显式重置模板片段缓存?

使用 Django 模板作为片段

python 通过django片段很多很多