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文件,直接生成数据库
项目settings.py->DATABASE={}中设置使用的数据库:默认连接sqlite
连接mysql配置文件:
DATABASES = { \'default\': { \'ENGINE\': \'django.db.backends.mysql\', \'NAME\':\'dbname\', \'USER\': \'root\', \'PASSWORD\': \'xxx\', \'HOST\': \'\', \'PORT\': \'\', } }
***********注意***********
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)
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\')
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的记录
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 ? 以上是关于Django ORM------Mysql的主要内容,如果未能解决你的问题,请参考以下文章 django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段 django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE的解决办法(转)(代码片段
答:上述提到MySQL等软件可以接受命令,并做出相应的操作,由于命令中可以包含删除文件、获取文件内容等众多操作,对于编写的命令就是是SQL语句。SQL