当前位置: 首页 > news >正文

视频解析网站建设聊城做wap网站哪儿好

视频解析网站建设,聊城做wap网站哪儿好,怎么建立类似百度问答的网站,十大垂直电商平台文章目录 模型层模型层前期准备使用django ORM要注意 代码演示:切换MySQL数据库如何查看django ORM 底层原理? 单表操作模型层之ORM常见关键字基础的增删改查常用的关键字 常见的十几种查询基于双下滑线的查询 模型层 模型层前期准备 使用django ORM要…

文章目录

  • 模型层
      • 模型层前期准备
            • 使用django ORM要注意
      • 代码演示:
      • 切换MySQL数据库
            • 如何查看django ORM 底层原理?
      • 单表操作
            • 模型层之ORM常见关键字
            • 基础的增删改查
            • 常用的关键字
      • 常见的十几种查询
      • 基于双下滑线的查询

模型层

模型层前期准备

使用django ORM要注意

1.django自带的sqlite3数据可对时间字段不敏感,有时候会展示错乱,所以我们习惯切换成常见的数据库比如MySQL。

2.django ORM并不会自动帮我们创建数据库,所以我们需要提前准备好‘db001’库

3.id字段是自动添加的,如果想自定义主键,只需要在其中一个字段中店家primary_key=True,如果django发现你已经明确的设置了Field.primary_key,它将不会自动添加ID列

4.django支持mysql5.5及更高版本。

默认不允许单独测试某个py文件,如果想要测试某个py文件,一般是测试models.py文件

测试环境1:pycharm提供的python console(临时保存,不推荐使用)

测试环境2:自己搭建(自带的test或者自己创建的py文件)

1.拷贝manage.py前四行代码
2.自己再添加两行import djangodjango.setup()

代码演示:

tests.py

# manage.py中拷贝前四行代码
import os
import sys
if __name__=='__main__':  # 需要在__name__下运行os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'djangoProject6.settings')# 1.引入django配置文件# 手写两行import djangodjango.setup()  # 2.启动django# 导入app01文件夹内models文件并 测试models文件内User运行from app01 import modelsmodels.User.objects.all()

models.py

class Userinfo(models.Model):username = models.CharField(max_length=32)password = models.CharField(max_length=64)age = models.IntegerField(null=True)register_time = models.DateTimeField(verbose_name='注册事件', auto_now_add=True)"""DateField       : 年月日DateTimeField   : 年月日 时分秒两个重要参数auto_now        : 每次操作数据的时候 该字段会自动将当前时间更新 auto_now_add    : 在创建数据的时候会自动将当前创建时间记录下来 之后只要不人为的修改 那么就一直不变"""def __str__(self):return self.username

在这里插入图片描述

切换MySQL数据库

1.提前终端创建好库db001
2.将DATABASES的配置更改DATABASES = {'default': {'ENGINE': 'django.db.backends.mysql','NAME': 'db001','USER':'root','PASSWORD':'123123','HOST':'127.0.0.1','PORT':3306,'CHARSET':'utf8'}
}
3.连接MySQL库,数据迁移
4.makemigrations
5.migrate
如何查看django ORM 底层原理?

django ORM本质还是SQL语句。

1.如果有QuerySet对象,那么可以直接点query查看SQL语句

res2 = models.Userinfo.objects.values_list('id', 'username')
print(res.query)
SELECT `app01_userinfo`.`id`, `app01_userinfo`.`username` FROM `app01_userinfo`

结论:有些不是QuerySet对象,就不能通过点query的形式点出来,就只能使用通过的方法

2.如果想查看所有ORM底层的SQL语句,也可以直接在配置文件添加日志记录

res1 = models.User.objects.create(name='kimi',age=16)
print(res.query)  # 会报错settings最后>>>拷贝代码放在settingsLOGGING = {'version': 1,'disable_existing_loggers': False,'handlers': {'console':{'level':'DEBUG','class':'logging.StreamHandler',},},'loggers': {'django.db.backends': {'handlers': ['console'],'propagate': True,'level':'DEBUG',},}
}

单表操作

模型层之ORM常见关键字
基础的增删改查
方法返回值
create(字段名=数据)刚创建的数据记录对象
filter(筛选条件)QuerySet列表对象
filter().update(修改内容)受影响的行数
filter().delete()受影响的行数即各表受影响的行数
常用的关键字
create描述
filter创建数据并直接获取当前创建的数据对象
first/last根据条件筛选数据 结果是QuerySet [数据对象1,数据对象2]
update拿queryset里面第一个元素/拿queryset里面最后一个元素
delete删除数据(批量删除)
all查询所有数据 结果是QuerySet [数据对象1,数据对象2]
values根据指定字段获取数据 结果是QuerySet [{}},{},{},{}]
values_list根据指定字段获取数据 结果是QuerySet [(),(),(),()]
distinct去重 数据一定要一模一样才可以 如果有主键肯定不行
order_by根据指定条件排序 默认是升序 字段前面加负号就是降序
get根据条件筛选数据并直接获取到数据对象 一旦条件不存在会直接报错 不建议使用
exclude取反操作
reverse颠倒顺序(被操作的对象必须是已经排过序的才可以)
count统计结果集中数据的个数
exists判断结果集中是否含有数据 如果有则返回True 没有则返回False

常见的十几种查询

if __name__=='__main__':os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'day06_1.settings')  # 1.引入django配置文件import djangodjango.setup()  # 2.启动djangofrom app01 import modelsres = models.Userinfo.objects.filter(pk=1).first()  # 查询id为1的数据print(res)# 查询所有数据,但是只要id和username字段res1 = models.Userinfo.objects.values('id', 'username')for i in res1:print(i['id'],i['username'])res2 = models.Userinfo.objects.values_list('id', 'username')  # 取出来的对象是列表套元组,可以通过索引取值print(res2)  # <QuerySet [(1, 'jack'), (2, 'jerry'), (3, 'tank')]>print(res2[0][1])  # jackprint(res2.query)  #  SELECT `app01_userinfo`.`id`, `app01_userinfo`.`username` FROM `app01_userinfo`查看底层的SQL语句res3 = models.Userinfo.objects.all().values('password').distinct()  # distinct 去重print(res3)  # <QuerySet [{'password': '123'}, {'password': '222'}]>res4 = models.Userinfo.objects.all().order_by('id')  # order_by 默认按照升序排序,在需要查找的值中加一个-号就是降序,可以添加多个字段排序print(res4)res5 = models.Userinfo.objects.all().order_by('-id').reverse()  # reverse 反转排序,前提是已经排过序了print(res5)res6 = models.Userinfo.objects.filter(password=123).count()  # count 统计当前数据的个数print(res6)res7 = models.Userinfo.objects.exclude(pk=1)  # exclude 查询除了id=1的所有数据print(res7)res8 = models.Userinfo.objects.filter(pk=4).exists()  # exists 查询当前数据是否存在print(res8)res9 = models.Userinfo.objects.create(username='sb',password=123)  # 添加数据print(res9)

基于双下滑线的查询

    1 年龄大于35岁的数据res = models.User.objects.filter(age__gt=35)print(res)2 年龄小于35岁的数据res = models.User.objects.filter(age__lt=35)print(res)大于等于 小于等于res = models.User.objects.filter(age__gte=32)print(res)res = models.User.objects.filter(age__lte=32)print(res)年龄是18 或者 32 或者40res = models.User.objects.filter(age__in=[18,32,40])print(res)年龄在1840岁之间的  首尾都要res = models.User.objects.filter(age__range=[18,40])print(res)查询出名字里面含有s的数据  模糊查询res = models.User.objects.filter(name__contains='s')print(res)是否区分大小写  查询出名字里面含有p的数据  区分大小写res = models.User.objects.filter(name__contains='p')print(res)忽略大小写res = models.User.objects.filter(name__icontains='p')print(res)res = models.User.objects.filter(name__startswith='j')res1 = models.User.objects.filter(name__endswith='j')print(res,res1)查询出注册时间是 2020 1月res = models.User.objects.filter(register_time__month='1')res = models.User.objects.filter(register_time__year='2020')
http://www.yayakq.cn/news/33498/

相关文章:

  • 重庆公章备案查询网站青海建设厅网站通知
  • 网站开发读书笔记广东住房和城乡建设厅网站造价
  • 做电商图的设计网站培训机构连锁加盟
  • 本地电商平台开发大连seo快速排名
  • 社保网站哪里做转入网站开发的税率是多少
  • 做搜狗网站优化排名软wordpress语言包路径
  • 网站优化升级百度搜索网站优化
  • 学校联网网站建设网站做担保交易平台
  • 淘宝做链接有哪些网站可以做wordpress战队模板
  • 网站建设全部流程包括备案注册top域名做公司网站
  • 做悬赏的网站公司网站推广费用
  • 网上做兼职做网站网络组建管理与维护
  • 做网站为什么要租服务器帮别人备案网站
  • 初识网站开发流程图网页设计主页面
  • 电商网站开发公司wordpress整站搬家首页空白问题
  • 国家电网公司交流建设分公司网站ps制作网页效果图教程
  • 大连网站制作诚推ls15227装修全包报价明细表2021
  • asp医院网站源码破解版厦门专业网站建设平台
  • 湛江市住房和城乡建设网站莱芜在线论坛话题莱芜都市网
  • 购买了网站空间如何进入什么软件可以刷网站排名
  • 黄岛开发区做网站网络公司网页设计报价模板
  • 编写网站方案设计书表格国内做app软件开发最好的公司
  • 网站建设补充协议模板wordpress怎么备份按在
  • 做网站有什么工具公司注销 网站备案
  • 服务器建网站阎良网站建设公司
  • 网站类型的销售最好的网站建设公司有哪些
  • 做网站招聘的职业顾问做淘宝是不是要两根网站
  • 自己做的网站如何让别人访问精密科技东莞网站建设
  • 手机网站搭建教程九江濂溪区
  • 做lol直播网站长沙代理记账