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

苏州网站设计kgwl网站备案信息如何注销吗

苏州网站设计kgwl,网站备案信息如何注销吗,广州网页设计师,做网站公众号多少钱Django--—ORM数据库操作(图书管理系统基本实例) 一.基本知识 MVC模式#xff08;Model–view–controller#xff09;是软件工程中的一种软件架构模式#xff0c;把软件系统分为三个基本部分#xff1a;模型#xff08;Model#xff09;、视图#xff08;View#xff…Django--—ORM数据库操作(图书管理系统基本实例) 一.基本知识 MVC模式Model–view–controller是软件工程中的一种软件架构模式把软件系统分为三个基本部分模型Model、视图View和控制器Controller。 ORM:对象关系映射(Object Relational Mapping简称ORM或O/RM或O/R mapping是一种程序技术用于实现面向对象编程语言里不同类型系统的数据之间的转换 。 从效果上说它其实是创建了一个可在编程语言里使用的-–“虚拟对象数据库”。 FBV function base views就是在视图里使用函数处理请求。 CBVclass base views 就是在视图里使用类处理请求。 二.为项目添加新app 注意新添加app时应在配置文件中的INSTALLED_APPS中写入我们创建的app名称 INSTALLED_APPS [django.contrib.admin, #这是django给你提供的一些特殊功能的配置应用只是咱们看不到也在应用这里给配置的这些功能如果你注销了那么我们执行同步数据库指令之后就不会生成那些django自带的表了。因为执行数据库同步语句的时候django会找这里面所有的应用找到他们的models来创建表django.contrib.auth,django.contrib.contenttypes,django.contrib.sessions,django.contrib.messages,django.contrib.staticfiles,book #直接写app的名字也行写app01.apps.App01Config也行 ] 三.创建与数据库的连接 1.此时首先应建立一个mysql数据库,这里我创建的数据库名为orm 2.settings.py文件中配置数据库连接,(创建项目时有默认的语句,找到DATABASES后修改补全即可) # Database # https://docs.djangoproject.com/en/1.11/ref/settings/#databasesDATABASES {default: {ENGINE: django.db.backends.mysql, # 连接的数据库类型NAME: orm, # 数据库名称USER:root, # 用户名PASSWORD:123,HOST:127.0.0.1,PORT:3306# NAME: os.path.join(BASE_DIR, db.sqlite3), # 创建项目时默认用的数据库类型} } sqlite数据库下的db.sqlite3则是项目自动创建 USER和PASSWORD分别是数据库的用户名和密码。设置完后再启动我们的Django项目前我们需要激活我们的mysql。然后启动项目会报错no module named MySQLdb 。这是因为django默认你导入的驱动是MySQLdb可是MySQLdb 对于py3有很大问题所以我们需要的驱动是PyMySQL 所以我们只需要找到项目名文件下的__init__.py,在里面写入 3.在项目app中的__init__.py 输入下面代码 import pymysqlpymysql.install_as_MySQLdb() 4.创建数据库表.先创建模式,项目目录下的models.py from django.db import models# Create your models here. class Book(models.Model):id models.AutoField(primary_keyTrue)title models.CharField(max_length32)pub_date models.DateField()price models.DecimalField(max_digits8,decimal_places2)publish models.CharField(max_length20)def __str__(self): # 这里用来以后对数据库操作时在控制台输出titile名称return self.title 5.需要在terminal中输入两行命令 python3 manage.py makemigrations # 创建脚本 python3 manage.py migrate # 迁移 6.查看执行的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,},} } 四.单表操作 在views.py中添加对数据库的操作语句 #在逻辑代码中导入你要操作的表 from app import modelsdef add_book(request):添加表记录:param request: http请求信息:return:models.Book(title人间失格,price12,pub_date2012-12-12,publish文学出版社) 1.添加表记录 方式1实例化对象就是一条表记录 from app import modelsobj models.Book(title复活,price12,pub_date2012-12-12,publish小出版社) obj.save() 方式2:(我们一般使用方式二添加) models.Book.objects.create(title复活,price12,pub_date2012-12-12,publish小出版社) 2.查询表记录 查询所有的记录: obj models.Book.objects.all() 使用values的结果: obj models.Book.objects.all().values() # QuerySet [{id: 1, title: 雪国列车2, pub_date: datetime.date(2012, 12, 1), 常用的查询API: 1 all(): 查询所有结果结果是queryset类型2 filter(**kwargs): 它包含了与所给筛选条件相匹配的对象结果也是queryset类型 Book.objects.filter(titlelinux,price100) #里面的多个条件用逗号分开并且这几个条件必须都成立是and的关系or关系的我们后面再学直接在这里写是搞不定or的3 get(**kwargs): 返回与所给筛选条件相匹配的对象不是queryset类型是行记录对象返回结果有且只有一个如果符合筛选条件的对象超过一个或者没有都会抛出错误。捕获异常try。 Book.objects.get(id1)4 exclude(**kwargs): 排除的意思它包含了与所给筛选条件不匹配的对象没有不等于的操作昂用这个exclude返回值是queryset类型 Book.objects.exclude(id6)返回id不等于6的所有的对象或者在queryset基础上调用Book.objects.all().exclude(id6)            5 order_by(*field): queryset类型的数据来调用对查询结果排序,默认是按照id来升序排列的返回值还是queryset类型 models.Book.objects.all().order_by(price,id) #直接写price默认是按照price升序排列按照字段降序排列就写个负号就行了order_by(-price),order_by(price,id)是多条件排序按照price进行升序price相同的数据按照id进行升序6 reverse(): queryset类型的数据来调用对查询结果反向排序返回值还是queryset类型7 count(): queryset类型的数据来调用返回数据库中匹配查询(QuerySet)的对象数量。8 first(): queryset类型的数据来调用返回第一条记录 Book.objects.all()[0] Book.objects.all().first()得到的都是model对象不是queryset9 last(): queryset类型的数据来调用返回最后一条记录10 exists(): queryset类型的数据来调用如果QuerySet包含数据就返回True否则返回False. 空的queryset类型数据也有布尔值True和False但是一般不用它来判断数据库里面是不是有数据如果有大量的数据你用它来判断那么就需要查询出所有的数据效率太差了用count或者exits例all_books models.Book.objects.all().exists() #翻译成的sql是SELECT (1) AS a FROM app01_book LIMIT 1就是通过limit 1取一条来看看是不是有数据11 values(*field): 用的比较多queryset类型的数据来调用返回一个ValueQuerySet——一个特殊的QuerySet运行后得到的并不是一系列.model的实例化对象而是一个可迭代的字典序列,只要是返回的queryset类型就可以继续链式调用queryset类型的其他的查找方法其他方法也是一样的。12 values_list(*field): 它与values()非常相似它返回的是一个元组序列values返回的是一个字典序列 13 distinct(): values和values_list得到的queryset类型的数据来调用从返回结果中剔除重复纪录 双下划线的单表查询 Book.objects.filter(price__in[100,200,300]) #price值等于这三个里面的任意一个的对象 Book.objects.filter(price__gt100) #大于大于等于是price__gte100别写price100这种参数不支持 Book.objects.filter(price__lt100) # 小于 同大于,不包含边界值 Book.objects.filter(price__range[100,200]) #sql的between and大于等于100小于等于200 Book.objects.filter(title__containspython) #title值中包含python的 Book.objects.filter(title__icontainspython) #不区分大小写 Book.objects.filter(title__startswithpy) #以什么开头istartswith 不区分大小写 Book.objects.filter(pub_date__year2012) # 日期查询,年份为2012的数据 关于value的用法 all_books models.Book.objects.all().values(id,title) print(all_books) #QuerySet [{title: linux, id: 6}, {title: 你好, id: 7}, {title: linux, id: 8}, {title: xxx, id: 9}, {title: gogogo, id: 10}]values做的事情ret [] #queryset类型for obj in Book.objects.all():temp { #元素是字典类型id:obj.id,title:obj.title}ret.append(temp) 关于时间问题:日期查询 all_books models.Book.objects.filter(pub_date__year2012) # 找2012年的所有书籍 all_books models.Book.objects.filter(pub_date__year__gt2012) # 找大于2012年的所有书籍 all_books models.Book.objects.filter(pub_date__year2019,pub_date__month2) # 找2019年月份的所有书籍如果明明有结果你却查不出结果是因为mysql数据库的时区和咱们django的时区不同导致的了解一下就行了你需要做的就是将django中的settings配置文件里面的USE_TZ True改为False就可以查到结果了以后这个值就改为False而且就是因为咱们用的mysql数据库才会有这个问题其他数据库没有这个问题。 当查询日期出现问题时: 将settings.py中最下面的USE_TZ False改为True USE_TZ True 不是跨时区的应用不需要考虑时区问题就将这个值改为Falsemysql是对时区不敏感django往mysql里面出数据的时候如果这里的值为True那么将让mysql强制使用UTC时间那么我们存储进入的时间当你查询的时候你就会发现时间晚了8小时也就是说你存时间的时候被改为了UTC时间本地是东八区比UTC时间多8小时 3.修改表记录 update只能是QuerySet类型才能调用,model对象不能直接调用更新方法,所以使用get方法获取对象的时候是不能使用update方法的 Book.objects.filter(title__startswith复活).update(price12) 注意 input typedate classform-control idbook_pub_date placeholder出版日期 namebook_pub_date value{{ edit_obj.pub_date|date:Y-m-d }} typedate的input标签value的值必须是Y-m-d的格式这个标签才能认识并被赋值所以要通过date过滤给它改变格式。 4.删除表记录 删除方法.delete()的调用者可以是一个model对象,也可以是一个queryset集合.它运行时立即删除对象而不返回任何值,也可以一次删除多个对象.每个queryset都有一个delete()方法 models.Book.objects.filter(title复活).delete() # 删除标题为复活的Book对象 任何情况下,QuerySet中的delete()方法都只使用一条SQL语句一次性删除所有对象,而并不是分别删除诶个对象,如果想使用model中自定义的delete()方法,就要自行调用每个对象的delete()方法(例如遍历 QuerySet在每个对象上调用 delete()方法)而不是使用 QuerySet 中的 delete()方法。 在Django删除对象时,会模仿SQL约束 ON DELETE CASCDE的行为(删除一个对象时也会删除与它相关联的外键对象) b Blog.objects.get(pk1) # This will delete the Blog and all of its Entry objects. b.delete() delete() 方法是 QuerySet 上的方法但并不适用于 Manager 本身。这是一种保护机制是为了避免意外地调用 Entry.objects.delete() 方法导致 所有的 记录被误删除。如果你确认要删除所有的对象那么你必须显式地调用 Entry.objects.all().delete() 转载于:https://www.cnblogs.com/robertx/p/10447094.html
http://www.zqtcl.cn/news/112148/

相关文章:

  • 建小网站多少钱深圳网站备案注销
  • 海淘网站是谁做的为该网站做自适应
  • php网站开发自学如何做x响应式网站
  • 吴忠网站建设公司随州网站建设优化推广渠道
  • dedecms 招聘网站网站建设市场调研报告
  • 建小网站多少钱做会计网站的流程
  • 为一个村做网站优秀文创产品设计案例及分析
  • 山东专业网站建设公司哪家好网站开发的薪资是多少
  • 无极在线网站播放烟台注册公司
  • 网站源文件修改科技网站欣赏
  • 关于h5的网站目录 首页 wordpress
  • 包头网站建设推广手机网站开发介绍
  • 网站推广设计用那种语言做网站比较好
  • 手机品牌网站如何做好网站内更新
  • 订餐网站模板下载毕业设计动漫网页设计
  • 网站阵地建设管理办法移动端网页界面设计
  • 网站和做游戏重庆市建设工程信息网安全监督特种人员
  • 沈阳网站建设活动方案部分网站打不开的原因
  • 网站维护界面设计做的网站一直刷新
  • 国外网站 国内访问速度土木工程毕业设计网站
  • 宿迁网站建设制作中国广告设计网
  • 上门做美容的有什么网站微信网页版本
  • 专门做餐饮运营的网站网站开发相关知识
  • 石家庄门户网站建设免费简历模板的网站
  • 微网站建设市场如何做好平台推广
  • 网站不备案做优化小程序开发前景怎么样
  • 美丽说网站优化百度关键词优化
  • 同性男做的视频网站赶集网招聘最新招聘附近找工作
  • 做挖机配件销售的网站oa办公系统软件哪家好
  • 聊城设计网站商务网站的特点