单表查询

单表查询

建立表

建立模型
在models.py中定义类,一个类就是一张表 from django.db import models class Book(models.Model): id = models.AutoField(primary_key=True) name = models.CharField(max_length=64) pub_data = models.DateField() price = models.DecimalField(max_digits=5, decimal_places=2) publish = models.CharField(max_length=12) def __str__(self): return self.name 
字段与参数
AutoField 自增加 BigAutoField SmallIntegerField 小整数 -32768 32767 PositiveSmallIntegerField 正小整数 0 32767 IntegerField -2147483648 2147483647 PositiveIntegerField 0 2147483647 BigIntegerField -9223372036854775808 9223372036854775807 BooleanField 布尔值类型 NullBooleanField 能够为空的布尔值 CharField 字符类型,必须提供max_length参数 DateField 日期格式 YYYY-MM-DD TimeField 时间格式 HH:MM[:ss[.uuuuuu]] FloatField 浮点型 DecimalField 10进制小数 参数: max_digits,小数总长度 decimal_places,小数位长度 BinaryField 二进制类型 
参数 null 若是为True,Django 将用NULL 来在数据库中存储空值。 默认值是 False. blank 若是为True,该字段容许不填。默认为False default 字段的默认值。能够是一个值或者可调用对象。若是可调用 ,每有新对象被建立它都会被调用。 primary_key 若是为True,那么这个字段就是模型的主键。 unique 若是该值设置为 True, 这个数据字段的值在整张表中必须是惟一的 choices 由二元组组成的一个可迭代对象(例如,列表或元组),用来给字段提供选择项。 

settings配置

DATABASES = {
    'default': { 'ENGINE': 'django.db.backends.mysql', 'NAME': 'lqz', 'USER': 'root', 'PASSWORD': '123456', 'HOST': '127.0.0.1', 'PORT': 3306, 'ATOMIC_REQUEST': True } } ATOMIC_REQUEST设置为True统一个http请求对应的全部sql都放在一个事务中执行(要么全部都成功,要么全部都失败)。 是全局性的配置, 若是要对某个http请求放水(而后自定义事务),能够用non_atomic_requests修饰器 

增长删除字段

删除,直接注释掉字段,执行数据库迁移命令便可   新增字段,在类里直接新增字段,直接执行数据库迁移命令会提示输入默认值,此时须要设置    注意:   1 数据库迁移记录都在 app01下的migrations  2 使用showmigrations命令能够查看没有执行migrate的文件   3 makemigrations是生成一个文件,migrate是将更改提交到数据量 

添加表记录

方式一:python

book_obj=Book.objects.create(title="python",state=True,price=100,publish="苹果出版社",pub_date="2012-12-12") 

方式二mysql

book_obj=Book(title="python",state=True,price=100,publish="苹果出版社",pub_date="2012-12-12") book_obj.save() 

查询表记录

all() 查询全部结果 filter(**kwargs) 返回QuerySet对象,它包含了与所给筛选条件相匹配的对象 get(**kwargs) 只能查询只有一个符合条件的对象,返回该对象 exclude(**kwargs) 它包含了与所给筛选条件不匹配的对象 order_by(*field) 对查询结果排序('id')默认由小到大,('-id')又大到小 reverse() 对查询结果反向排序 count() 返回数据库中匹配查询(QuerySet)的对象数量。 first() 返回第一条记录 last() 返回最后一条记录 exists() 若是QuerySet包含数据,就返回True,不然返回False values(*field) 返回一个ValueQuerySet,其中包含的是一个个字典 values_list(*field) values()返回的QuerySet中的字典变元组 distinct() 从返回结果中剔除重复纪录 
模糊查询
Book.objects.filter(price__in=[100,200,300]) Book.objects.filter(price__gt=100) Book.objects.filter(price__lt=100) Book.objects.filter(price__gte=100) Book.objects.filter(price__lte=100) Book.objects.filter(price__range=[100,200]) Book.objects.filter(title__contains="python") Book.objects.filter(title__icontains="python") Book.objects.filter(title__startswith="py") Book.objects.filter(pub_date__year=2012) 

删除记录

queryset对象能够调用,对象能够调用 ret=Book.objects.filter(name='水浒传').delete() ret=Book.objects.filter(name='红楼梦').first().delete() (1, {'app01.Book': 1}) 1 影响一条记录 被影响的表名 1 影响这个表的记录 print(ret) 这不能够 manager对象 ret=Book.objects.delete() #这个是manager对象,不能够 这个能够 ret=Book.objects.all().delete() 

修改记录

Book.objects.filter(title__startswith="py").update(price=120) 返回值为影响的条数 

在python脚本中调用Django环境

import os if __name__ == '__main__': os.environ.setdefault("DJANGO_SETTINGS_MODULE", "untitled15.settings") import django django.setup() from app01 import models books = models.Book.objects.all() print(books) 

Django终端打印SQL语句

LOGGING = {
    'version': 1, 'disable_existing_loggers': False, 'handlers': { 'console':{ 'level':'DEBUG', 'class':'logging.StreamHandler', }, }, 'loggers': { 'django.db.backends': { 'handlers': ['console'], 'propagate': True, 'level':'DEBUG', }, } }
相关文章
相关标签/搜索