十 .Django 单表操作(ORM)
发布时间:2020-12-20 10:59:51 所属栏目:Python 来源:网络整理
导读:一 .ORM--------单表操作 1. 创建orm表 python manage.py makemigrations # 创建生成表的脚本 python manage.py # 生成数据库表 2 、必须安装pymysql pip install pymysql 3 、找到项目名文件下的__init__,在里面写入: import pymysqlpymysql.install_as_My
一 .ORM--------单表操作1. 创建orm表python manage.py makemigrations # 创建生成表的脚本 python manage.py # 生成数据库表 2、必须安装pymysql pip install pymysql 3、找到项目名文件下的__init__,在里面写入: import pymysql pymysql.install_as_MySQLdb() # models.py form django.db import models class Book(models.Model): # 表名book,django会自动使用项目名+我们定义的表名 # 如没有自定义主键,django会自动添加一个主键,字段名id 自增 name = models.CharField(max_length=20) # 字段名name 类型 vachar(20) price = models.IntegerField() # 字段名price 类型int pub_date = models.DateField() # 字段名pub_date 类型 date (时间戳) author = models.CharField(max_length=32,null=False) # 默认可以为空,设置null=False则不能为空 def __str__(self): return self.name # 打印实例对象时显示为self.name ?2.通过视图函数对数据表进行增删改(单表操作)# views.py from django.shortcuts import render from app_name.models import * # 导入models.py ? ?3 .通过视图函数对数据表进行查询(单表操作)filter()过滤 def select(request): book_list = Book.objects.filter(id=2) # 按条件查询 返回一个QuerySet集合对象 ?4.通过视图函数对数据表进行查询(万能的双下划线单表操作)__gt 大于 __lt 小于 __icontains包含 __in包含 not_in 不包含 __range 在范围内 __exact 精确等于 like ‘aaa‘ __iexact 精确等于 忽略大小写 ilike ‘aaa‘ __contains 包含 like ‘%aaa%‘ __icontains 包含 忽略大小写 ilike ‘%aaa%‘,但是对于sqlite来说,contains的作用效果等同于icontains。 __gt 大于 __gte 大于等于 __lt 小于 __lte 小于等于 __in 存在于一个list范围内 __startswith 以...开头 __istartswith 以...开头 忽略大小写 __endswith 以...结尾 __iendswith 以...结尾,忽略大小写 __range 在...范围内 __year 日期字段的年份 __month 日期字段的月份 __day 日期字段的日 __isnull=True/False __isnull=True 与 __exact=None的区别 ?5.?获取orm对应原生的sql语句author_obj=models.Author.objects.filter(id=2) print(author_obj.query) 、在settings.py配置文件中加上logging,可在服务端输入orm对应的sql语句 复制代码 # 将以下代码加入settings.py文件的尾部 LOGGING = { ‘version‘: 1,‘disable_existing_loggers‘: False,‘handlers‘: { ‘console‘:{ ‘level‘:‘DEBUG‘,‘class‘:‘logging.StreamHandler‘,},‘loggers‘: { ‘django.db.backends‘: { ‘handlers‘: [‘console‘],‘propagate‘: True,‘level‘:‘DEBUG‘,} } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |