ORM模型类

模型

创建两个表

创建模型类

from django.db import models# Create your models here.
class BookInfo(models.Model):name = models.CharField(max_length=10, unique=True)  # 书名pub_date = models.DateField(null=True)  # 发布时间read_count = models.IntegerField(default=0)  # 阅读量comment_count = models.IntegerField(default=0)  # 点击量is_delete = models.BooleanField(default=False)  # 软删除class Meta:db_table = "bookinfo"  # 修改表的名字verbose_name = "书籍管理"  # admin站点使用的def __str__(self):return self.nameclass PeopleInfo(models.Model):# 定义一个有序字典GENDER_CHOICE = {(1, "male"),(2, "female"),}name = models.CharField(max_length=10)  # 人物名字gender = models.SmallIntegerField(choices=GENDER_CHOICE, default=1)  # 人物性别description = models.CharField(max_length=100, null=True)  # 人物描述is_delete = models.BooleanField(default=False)  # 软删除book = models.ForeignKey(BookInfo, on_delete=models.CASCADE)  # 外键class Meta:db_table = "peopleinfo"def __str__(self):return self.name

生成迁移文件

 python .\manage.py makemigrations

执行迁移文件 

 python .\manage.py migrate    

数据库表名

模型类如果未指明表名,django默认以小写app应用名_小写模型名为数据库表名

可通过db_table指明数据库表名,在模型类里面进行定义

    class Meta:db_table = "bookinfo"  # 修改表的名字verbose_name = "书籍管理"  # admin站点使用的

关于主键

django会为表创建自动增长的主键列,每个模型只能有一个主键列,如果使用选项设置某属性为主键列后django不会再创建自动增长的主键列

属性名命名限制

  • 不能是python的保留关键字
  • 不允许使用连续的下划线,这是由django的查询方式决定的
  • 定义属性时需要指定字段类型,通过 字段类型的参数指定选项
属性名=models.字段类型(选项)

字段类型

类型说明
AutoField自增整数,不指定是django会自动创建,属性名为id
BooleanField布尔字段,值为True或False
NullBooleanField支持Null、True、False三种值
CharField字符串,参数max_length表示最大字符个数
TextField大文本字段,一般超过4000个字符时使用
IntegerField整数
DecimaIField十进制浮点数,参数max_digits表示总位数,参数decimal_places表示小数位数
FloatField浮点数
DateField日期,参数auto_now每次保存时设置为当前时间,参数auto_now_add第一次被创建时设置为当前时间,默认都为False,不可组合
TimeFoeld时间,参数同DateField
DateTimeField

日期时间,参数同DateField

FileField上传文件字段
ImageFiled继承于FileField,对上传的内容进行校验,确保是有效的图片

选项

null是数据库范畴的概念,blank是表单验证的范畴

选项说明
null如果为True,表示允许为空,默认False
blank如果为True,表示允许为空白,默认False
db_column字段名称,若未指定,使用属性的名称
db_index若值为True,则会为表中的字段创建索引,默认False
default指定默认值
primary_key若为True,字段成为模型主键,默认False
unique如果为True,字段中的值不可重复,默认False

外键

on_delete=

指外键被删除后被关联字段的数据要做什么操作

可选参数

  • CASCADE级联:删除主表数据时,连同外键表字段中的数据一起删除
  • PROTECT保护:通过抛出ProtecteError异常,无法删除主表中的数据
  • SET_NULL设置为NULL,仅在该字段null=True允许为空时,将关联字段数据置为空
  • SET_DEFAULT设置默认值:仅在该字段设置了默认值时可用
  • SET()设置为特定值或调用特定方法
  • DO_NOTHING:不做任何操作,如果数据库前置指明级联性,会抛出IntegrityError异常
返回一个对象=models.ForeignKey(外键类名,on_delete=[])

shell

作用

快速验证增删改查的结果,最终的代码还是要写在视图中

进入shell命令

python manage.py shell

增加数据

方式一,创建对象,一个对象就是一条数据

需要调用save()方法,保存

导入模型类
from bookmanager.book.models import BookInfobook=BookInfo(name="django",pub_date="2000-1-1",read_count="10")
book.save()"""
mysql> select * from bookinfo-> ;
+----+--------+---------------+-----------+------------+------------+
| id | name   | comment_count | is_delete | pub_date   | read_count |
+----+--------+---------------+-----------+------------+------------+
|  1 | django |             0 |         0 | 2000-01-01 |         10 |
+----+--------+---------------+-----------+------------+------------+
1 row in set (0.00 sec)
"""

方式二,使用objects

不需要save()

# objects相当于一个代理,直接跟数据库打交道
BookInfo.objects.create(name="flask",pub_date="2020-1-1",read_count="100")"""
mysql> select * from bookinfo ;
+----+--------+---------------+-----------+------------+------------+
| id | name   | comment_count | is_delete | pub_date   | read_count |
+----+--------+---------------+-----------+------------+------------+
|  1 | django |             0 |         0 | 2000-01-01 |         10 |
|  2 | flask  |             0 |         0 | 2020-01-01 |        100 |
+----+--------+---------------+-----------+------------+------------+
2 rows in set (0.00 sec)
"""

更新数据

方式一get,需要调用save()方法

get查询,查询后返回一个对象,通过对象属性赋值来更改数据

from bookmanager.book.models import BookInfo# get查询,查询后返回一个对象,通过对象属性赋值来更改数据
book=BookInfo.objects.get(id=1)
book.name="新版Django"
book.save()"""
mysql> select * from bookinfo ;
+----+------------+---------------+-----------+------------+------------+
| id | name       | comment_count | is_delete | pub_date   | read_count |
+----+------------+---------------+-----------+------------+------------+
|  1 | 新版Django |             0 |         0 | 2000-01-01 |         10 |
|  2 | flask      |             0 |         0 | 2020-01-01 |        100 |
+----+------------+---------------+-----------+------------+------------+
2 rows in set (0.00 sec)"""

方式二filter,不需要调用save()方法

BookInfo.objects.filter(id=2).update(name="升级flask",pub_date="2024-2-2")"""
>>> BookInfo.objects.filter(id=2).update(name="升级flask",pub_date="2024-2-2") 
1mysql> select * from bookinfo ;
+----+------------+---------------+-----------+------------+------------+
| id | name       | comment_count | is_delete | pub_date   | read_count |
+----+------------+---------------+-----------+------------+------------+
|  1 | 新版Django |             0 |         0 | 2000-01-01 |         10 |
|  2 | 升级flask  |             0 |         0 | 2024-02-02 |        100 |
+----+------------+---------------+-----------+------------+------------+
2 rows in set (0.00 sec)
"""

删除数据

删除分为两种

物理删除:从硬盘上彻底删除

逻辑删除:修改标志位,给数据打上标签

方式一get

先使用get查询数据,然后调用对象的呃delete方法,不用调用save()方法


book=BookInfo.objects.get(id=1)
book.delete"""
>>> book=BookInfo.objects.get(id=1)
>>> book.delete()
(1, {'book.PeopleInfo': 0, 'book.BookInfo': 1})mysql> select * from bookinfo ;
+----+-----------+---------------+-----------+------------+------------+
| id | name      | comment_count | is_delete | pub_date   | read_count |
+----+-----------+---------------+-----------+------------+------------+
|  2 | 升级flask |             0 |         0 | 2024-02-02 |        100 |
+----+-----------+---------------+-----------+------------+------------+
1 row in set (0.00 sec)
"""

方式二filter

BookInfo.objects.filter(id=2).delete()"""
>>> BookInfo.objects.filter(id=2).delete()
(1, {'book.PeopleInfo': 0, 'book.BookInfo': 1})mysql> select * from bookinfo ;
Empty set (0.00 sec)
"""

运算符

运算符说明

exact等于

id__exact=1,查询id=1
contains包含name__contains="刘",查询名字中包含刘的
endswith结尾name__endswith="刚",查询名字结尾包含刚的
isnull=True为空name__isnull=True,查询名字为空的
in=[]值是否在列表里面id__in=[1,3,5],查询id为1,3,5的数据
gt大于id__gt=3,查询id大于3的数据
gte大于等于id__gte=3,查询id大于等于3的数据
lt小于id__lt=3,查询id小于3的数据
lte小于等于id__lte=3,查询id小于等于3的数据
year年份date__year=2024,查询日期年是2024年的数据

查询

基础查询

  • get:只能查到一条数据,通常用于精确查询,如果不存在会抛出异常
  • all:查询多个结果,返回的一个数组
  • count:统计查询结果的数量 

get查询

book=BookInfo.objects.get(id=3)"""
>>> book=BookInfo.objects.get(id=3)
>>> book
<BookInfo: 内测flask>mysql> select * from bookinfo ;
+----+-----------+---------------+-----------+------------+------------+
| id | name      | comment_count | is_delete | pub_date   | read_count |
+----+-----------+---------------+-----------+------------+------------+
|  3 | 内测flask |             0 |         0 | 2020-01-01 |        100 |
|  4 | django    |             0 |         0 | 2000-01-01 |         10 |
+----+-----------+---------------+-----------+------------+------------+
2 rows in set (0.00 sec)
"""

all查询

books=BookInfo.object.all()
books"""
>>> books=BookInfo.objects.all()
>>> books
<QuerySet [<BookInfo: 内测flask>, <BookInfo: django>]>mysql> select * from bookinfo ;
+----+-----------+---------------+-----------+------------+------------+
| id | name      | comment_count | is_delete | pub_date   | read_count |
+----+-----------+---------------+-----------+------------+------------+
|  3 | 内测flask |             0 |         0 | 2020-01-01 |        100 |
|  4 | django    |             0 |         0 | 2000-01-01 |         10 |
+----+-----------+---------------+-----------+------------+------------+
2 rows in set (0.00 sec)
"""

 count统计查询

books_count=BookInfo.objects.all().count()
books_countcounts=BookInfo.objects.count()
counts  
"""
>>> books_count=BookInfo.objects.all().count() 
>>> books_count                                
2>>> counts=BookInfo.objects.count()
>>> counts                          
2mysql> select count(*) from bookinfo;
+----------+
| count(*) |
+----------+
|        2 |
+----------+
1 row in set (0.00 sec
"""

过滤查询

  • filter过滤出多个结果,返回的是一个列表
  • exclude排除掉符合条件剩下的结果,返回的也是一个列表
  • get过滤第单一结果,只返回一个结果

filter查询

模型名.objects.filter(属性名__运算符=值)

BookInfo.objects.filter(id=4)
BookInfo.objects.filter(id__exact=4)"""
>>> BookInfo.objects.filter(id=4)
<QuerySet [<BookInfo: django>]>
>>> BookInfo.objects.filter(id__exact=4)
<QuerySet [<BookInfo: django>]>"""

exclude查询

模型名.objects.exclude(属性名__运算符=值)

BookInfo.objects.exclude(id=4)
BookInfo.objects.exclude(id__exact=4)"""
>>> BookInfo.objects.exclude(id=4)    
<QuerySet [<BookInfo: 内测flask>, <BookInfo: python>, <BookInfo: java>, <BookInfo: html>]>
>>> BookInfo.objects.exclude(id__exact=4) 
<QuerySet [<BookInfo: 内测flask>, <BookInfo: python>, <BookInfo: java>, <BookInfo: html>]>"""

get查询

模型名.objects.get(属性名__运算符=值)


BookInfo.objects.get(id=4)
BookInfo.objects.get(id__excat=4)   
"""
>>> BookInfo.objects.get(id__exact=4)   
<BookInfo: django>
>>> BookInfo.objects.get(id=4)          
<BookInfo: django>"""

F对象

对查询对象的属性进行比较,需要导入模块

from django.db.models import F

模型类名.objects.filter(属性名__运算符=F(“第二个属性名”))

from django.db.models import FBookInfo.objects.filter(read_count__gt=F("comment_count"))"""
>>> from django.db.models import F
>>> BookInfo.objects.filter(read_count__gt=F("comment_count"))
<QuerySet [<BookInfo: 内测flask>, <BookInfo: django>]>mysql> select * from bookinfo ;
+----+-----------+---------------+-----------+------------+------------+
| id | name      | comment_count | is_delete | pub_date   | read_count |
+----+-----------+---------------+-----------+------------+------------+
|  3 | 内测flask |             0 |         0 | 2020-01-01 |        100 |
|  4 | django    |             0 |         0 | 2000-01-01 |         10 |
|  5 | python    |            10 |         0 | 2024-01-01 |          0 |
|  6 | java      |           200 |         0 | 2022-01-01 |          0 |
|  7 | html      |            50 |         0 | 2020-01-01 |          0 |
+----+-----------+---------------+-----------+------------+------------+
5 rows in set (0.00 sec)
"""

Q对象

可用实现逻辑与和逻辑或的查询

需要导入模块

from django.db.models import Q

并且查询

BookInfo.objects.filter(id=5).filter(read_count__lt=10)
BookInfo.objects.filter(id=5,read_count__lt=10)"""
>>> BookInfo.objects.filter(id=5).filter(read_count__lt=10)
<QuerySet [<BookInfo: python>]>
>>> BookInfo.objects.filter(id=5,read_count__lt=10)
<QuerySet [<BookInfo: python>]>mysql> select * from bookinfo ;
+----+-----------+---------------+-----------+------------+------------+
| id | name      | comment_count | is_delete | pub_date   | read_count |
+----+-----------+---------------+-----------+------------+------------+
|  3 | 内测flask |             0 |         0 | 2020-01-01 |        100 |
|  4 | django    |             0 |         0 | 2000-01-01 |         10 |
|  5 | python    |            10 |         0 | 2024-01-01 |          0 |
|  6 | java      |           200 |         0 | 2022-01-01 |          0 |
|  7 | html      |            50 |         0 | 2020-01-01 |          0 |
+----+-----------+---------------+-----------+------------+------------+
5 rows in set (0.00 sec)
""

Q查询

或查询:模型类名.objects.filter(Q(属性名__运算符=值)|Q(属性名__运算符=值)|....)

from django.db.models import QBookInfo.objects.filter(Q(id=5)|Q(read_count__lt=10))"""
>>> BookInfo.objects.filter(Q(id=5)|Q(read_count__lt=10)) 
<QuerySet [<BookInfo: python>, <BookInfo: java>, <BookInfo: html>]>"""

并且查询:模型类名.objects.filter(Q(属性名__运算符=值)&Q(属性名__运算符=值)&.....)

BookInfo.objects.filter(Q(id=5)&Q(read_count__lt=10))"""
>>> BookInfo.objects.filter(Q(id=5)&Q(read_count__lt=10)) 
<QuerySet [<BookInfo: python>]>"""

非not查询:模型类名.objects.filter(~Q(属性名__运算符=值))

BookInfo.objects.filter(~Q(id=5)&Q(read_count__lt=10))
BookInfo.objects.filter(~Q(id=5)&~Q(read_count__lt=10)) BookInfo.objects.filter(~Q(id=5)|Q(read_count__lt=10))  
BookInfo.objects.filter(~Q(id=5)|~Q(read_count__lt=10)) 
"""
>>> BookInfo.objects.filter(~Q(id=5)&Q(read_count__lt=10))
<QuerySet [<BookInfo: java>, <BookInfo: html>]>
>>> BookInfo.objects.filter(~Q(id=5)&~Q(read_count__lt=10)) 
<QuerySet [<BookInfo: 内测flask>, <BookInfo: django>]>>>> BookInfo.objects.filter(~Q(id=5)|Q(read_count__lt=10))  
<QuerySet [<BookInfo: 内测flask>, <BookInfo: django>, <BookInfo: python>, <BookInfo: java>, <BookInfo: html>]>
>>> BookInfo.objects.filter(~Q(id=5)|~Q(read_count__lt=10)) 
<QuerySet [<BookInfo: 内测flask>, <BookInfo: django>, <BookInfo: java>, <BookInfo: html>]>"""

聚合函数

Sum、Max、Min、Avg、Count

模块名.objects.aggregate(聚合函数("字段名"))

需要导入模块

from django.db.models import Sum,Max,Min,Avg,Count
from django.db.models import Sum,Max,Min,Count,AvgBookInfo.objects.aggregate(Sum("read_count"))
BookInfo.objects.aggregate(Avg("read_count"))
BookInfo.objects.aggregate(Max("read_count"))
BookInfo.objects.aggregate(Min("read_count"))
BookInfo.objects.aggregate(Count("read_count"))"""
>>> from django.db.models import Sum,Max,Min,Count,Avg
>>> BookInfo.objects.aggregate(Sum("read_count"))
{'read_count__sum': 110}>>> BookInfo.objects.aggregate(Avg("read_count"))
{'read_count__avg': 22.0}>>> BookInfo.objects.aggregate(Max("read_count"))
{'read_count__max': 100}>>> BookInfo.objects.aggregate(Min("read_count"))
{'read_count__min': 0}>>> BookInfo.objects.aggregate(Count("read_count"))
{'read_count__count': 5}
"""

排序

升序

BookInfo.object.all().order_by("read_count")"""
>>> BookInfo.objects.all().order_by("read_count") 
<QuerySet [<BookInfo: python>, <BookInfo: java>, <BookInfo: html>, <BookInfo: django>, <BookInfo: 内测flask>]>"""

降序

BookInfo.objects.all().order_by("-read_count")
"""
>>> BookInfo.objects.all().order_by("-read_count") 
<QuerySet [<BookInfo: 内测flask>, <BookInfo: django>, <BookInfo: python>, <BookInfo: java>, <BookInfo: html>]>"""

关联查询

关联查询往往是查询通过外键关联两个表的数据

系统会自动在主表中添加小写外键类名_set的方法

一对多模型类对象.多对应的模型类名小写_set

# 需要拿到主表数据的一个对象
# 然后去调用关联表的模型类_set
book=BookInfo.objects.get(id=6)
book.peopleinfo_set.all()
"""
>>> book=BookInfo.objects.get(id=6) 
>>> book.peopleinfo_set.all()       
<QuerySet [<PeopleInfo: 詹姆斯·高斯林>, <PeopleInfo: 余麻子>]>mysql> select * from peopleinfo ;
+----+----------------+--------+---------+-------------+-----------+
| id | name           | gender | book_id | description | is_delete |
+----+----------------+--------+---------+-------------+-----------+
|  1 | 吉多·范罗苏姆 |      1 |       3 | python之夫  |         0 |
|  4 | 吉多·范罗苏姆 |      1 |       5 | python之夫  |         0 |
|  5 | 詹姆斯·高斯林 |      1 |       6 | java之夫    |         0 |
|  6 | 余麻子         |      1 |       6 | java继夫    |         0 |
+----+----------------+--------+---------+-------------+-----------+
4 rows in set (0.00 sec)mysql> select * from bookinfo ;
+----+-----------+---------------+-----------+------------+------------+
| id | name      | comment_count | is_delete | pub_date   | read_count |
+----+-----------+---------------+-----------+------------+------------+
|  3 | 内测flask |             0 |         0 | 2020-01-01 |        100 |
|  4 | django    |             0 |         0 | 2000-01-01 |         10 |
|  5 | python    |            10 |         0 | 2024-01-01 |          0 |
|  6 | java      |           200 |         0 | 2022-01-01 |          0 |
|  7 | html      |            50 |         0 | 2020-01-01 |          0 |
+----+-----------+---------------+-----------+------------+------------+
5 rows in set (0.00 sec)
"""

多对一的模型类对象.多对应的模型类中的关系类属性名

因为从表的外键已经指向了一个主表对象,所以可以直接获取从表对象来调用主表模型类,可以获得主表模型类的对象,也可以获取主表模型类对象的属性

people=PeopleInfo.objects.get(id=1)
people.book.all()"""
>>> people=PeopleInfo.objects.get(id=1) 
# 获取主表模型类对象
>>> people.book     
<BookInfo: 内测flask>
# 获取主表模型类对象的属性
>>> people.book.name                    
'内测flask'"""

关联过滤查询

语法格式:模型类名.objects.(关联模型类名小写__字段名__运算符=值) 

从一的数据表中查询符合条件的从表的值(左一右多)

BookInfo.objects.filter(peopleinfo__name__exact="余麻子")
BookInfo.objects.filter(peopleinfo__name__contains="余")"""
>>> BookInfo.objects.filter(peopleinfo__name__exact="余麻子")
<QuerySet [<BookInfo: java>]>
>>> BookInfo.objects.filter(peopleinfo__name__contains="余")
<QuerySet [<BookInfo: java>]>"""

根据从表的数据查询主表数据(使用外键)

PeopleInfo.objects.filter(book.name__exact="python")""""
>>> PeopleInfo.objects.filter(book__name__exact="python") 
<QuerySet [<PeopleInfo: 吉多·范罗苏姆>]>"""

查询结果集QuerySet

什么是结果集,必须是结果集才有两大特性

返回的查询结果不是单一的数据,而是一个集合QuerySet

两大特性(影响效率,在views视图中不执行就不不会消耗资源)

  • 惰性执行:只有用的时候才会去执行,例如
# 在数据库中之句话并没有执行
book=BookInfo.objects.all()
# 当需要用到book时,才会请求数据库返回数据
book"""
>>> book=BookInfo.objects.all() 
>>> book # 这是才会去看book是什么数据
<QuerySet [<BookInfo: 内测flask>, <BookInfo: django>, <BookInfo: python>, <BookInfo: java>, <BookInfo: html>]>"""
  • 缓存:使用同一个查询集(QuerySet)第一次使用会直接查询,然后把结果缓存下来,再次使用结果集时候就会用到这个缓存数据,减少数据库查询的次数
# 这句话返回的是一个结果集QuerySet,它可以被缓存到内存中
books=BookInfo.objects.all() """
>>> books=BookInfo.objects.all() 
>>> books                        
<QuerySet [<BookInfo: 内测flask>, <BookInfo: django>, <BookInfo: python>, <BookInfo: java>, <BookInfo: html>]>
>>> [book.id for book in books]  
[3, 4, 5, 6, 7]
"""

限制查询集(切片操作)

不支持复数索引

# 返回了一个结果集合,可以操作下标索引
books=BookInfo.objects.all()"""
>>> books=BookInfo.objects.all() 
>>> books
<QuerySet [<BookInfo: 内测flask>, <BookInfo: django>, <BookInfo: python>, <BookInfo: java>, <BookInfo: html>]>
>>> books[1] 
<BookInfo: django>
>>> books[0:1] 
<QuerySet [<BookInfo: 内测flask>]>
""""

分页(查询文档学习)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/253158.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【TCP/IP】用户访问一个购物网站时TCP/IP五层参考模型中每一层的功能

当用户访问一个购物网站时&#xff0c;网络上的每一层都会涉及不同的协议&#xff0c;具体网络模型如下图所示。 以下是每个网络层及其相关的协议示例&#xff1a; 物理层&#xff1a;负责将比特流传输到物理媒介上&#xff0c;例如电缆或无线信号。所以在物理层&#xff0c;可…

ElastAlert 错误日志告警

文章目录 前言一、ElastAlert 概览1.1 简介1.2 ElastAlert 特性 二、ElastAlert 下载部署2.1 安装 Python3 环境2.2 下载 ElastAlert2.3 部署 ElastAlert 三、接入平台3.1 对外接口层3.2 服务层 前言 ElastAlert 是 Yelp 公司基于 python 开发的 ELK 日志告警插件&#xff0c;…

vue electron应用调exe程序

描述 用Python写了一个本地服务编译成exe程序&#xff0c;在electron程序启动后&#xff0c;自动执行exe程序 实现 1. 使用node的child_process模块可以执行windows执行&#xff0c;通过指令调exe程序 // electron/index.js var cp require("child_process"); /…

C++泛编程(3)

类模板基础 1.类模板的基本概念2.类模板的分文件编写3.类模板的嵌套 在往节内容中&#xff0c;我们详细介绍了函数模板&#xff0c;这节开始我们就来聊一聊类模板。C中&#xff0c;类的细节远比函数多&#xff0c;所以这个专题也会更复杂。 1.类模板的基本概念 和函数模板一样…

AES算法:数据传输的安全保障

在当今数字化时代&#xff0c;数据安全成为了一个非常重要的问题。随着互联网的普及和信息技术的发展&#xff0c;我们需要一种可靠的加密算法来保护我们的敏感数据。Advanced Encryption Standard&#xff08;AES&#xff09;算法应运而生。本文将介绍AES算法的优缺点、解决了…

【调试】pstore原理和使用方法总结

什么是pstore pstore最初是用于系统发生oops或panic时&#xff0c;自动保存内核log buffer中的日志。不过在当前内核版本中&#xff0c;其已经支持了更多的功能&#xff0c;如保存console日志、ftrace消息和用户空间日志。同时&#xff0c;它还支持将这些消息保存在不同的存储…

H5 简约四色新科技风引导页源码

H5 简约四色新科技风引导页源码 源码介绍&#xff1a;一款四色切换自适应现代科技风动态背景的引导页源码&#xff0c;源码有主站按钮&#xff0c;分站按钮2个&#xff0c;QQ联系站长按钮一个。 下载地址&#xff1a; https://www.changyouzuhao.cn/11990.html

适合龙年春节的SVG模版

宝藏模版 往期推荐&#xff08;点击阅读&#xff09;&#xff1a; 趣味效果&#xff5c;高大上&#xff5c;可爱风&#xff5c;年终总结&#xff08;一&#xff09;&#xff5c;年终总结&#xff08;二&#xff09;&#xff5c;循环特效&#xff5c;情人节&#xff08;一&…

Quartus IP 之mif与hex文件创建与使用

一、mif与hex概述 ROM IP的数据需要满足断电不丢失的要求&#xff0c;ROM IP数据的文件格式一般有三种文件格式&#xff1a;.mif、.hex、.coe&#xff0c;Xilinx与Intel Altera支持的ROM IP数据文件格式如下&#xff1a; Xilinx与Altera支持的ROM文件格式 Alterahex、mifAM&am…

DolphinScheduler本地安装

文章目录 前言1. 安装部署DolphinScheduler1.1 启动服务 2. 登录DolphinScheduler界面3. 安装内网穿透工具4. 配置Dolphin Scheduler公网地址5. 固定DolphinScheduler公网地址 前言 本篇教程和大家分享一下DolphinScheduler的安装部署及如何实现公网远程访问&#xff0c;结合内…

如果品牌刚刚开始,切入私域社群团购,快团团是最好的选择

如果品牌刚刚开始&#xff0c;切入私域社群团购&#xff0c;快团团是最好的选择&#xff0c;借力新渠道社群团购&#xff0c;快团团&#xff0c;成就你的新品牌&#xff0c; 社群团购平台本身就有大量的信任你平台的流量&#xff0c;这个流量基数是巨大的。 你要知道的是&…

惟客数据地产经营分析解决方案-构建数字化经营体系,提高精细化管理能力

惟客数据地产经营分析解决方案以拉通数据底座&#xff0c;以管理行为、量化考核、预警机制为核心&#xff0c;强化对经营风险的识别和解决&#xff0c;以终为始&#xff0c;通过高频高价值场景的应用适配&#xff0c;支撑企业在数字化时代中不断创新、转型&#xff0c;提升企业…

Rhino.Inside带材质将Revit模型bake到Rhino

Hello大家好&#xff01;我是九哥~ 今天来讲一个小技巧&#xff0c;就是我通常采用RIR将Revit的模型的Geometry Bake到Rhino&#xff0c;肯定是没有材质的&#xff0c;那么如果我们需要带材质那要怎么办呢&#xff1f; 对于会的人&#xff0c;其实挺简单的&#xff0c;只需要…

力扣热门100题 - 4.寻找两个正序数组的中位数

力扣热门100题 - 4.寻找两个正序数组的中位数 题目描述&#xff1a;示例&#xff1a;提示&#xff1a;解题思路&#xff1a;代码&#xff1a; 题目链接&#xff1a;4.寻找两个正序数组的中位数 题目描述&#xff1a; 给定两个大小分别为 m 和 n 的正序&#xff08;从小到大&a…

用python编写爬虫,爬取房产信息

题目 报告要求 工程报告链接放在这里 https://download.csdn.net/download/Samature/88816284使用 1.安装jupyter notebook 2.用jupyter notebook打开工程里的ipynb文件&#xff0c;再run all就行 注意事项 可能遇到的bug 暂无&#xff0c;有的话私信我

Verilog刷题笔记20

题目&#xff1a; Case statements in Verilog are nearly equivalent to a sequence of if-elseif-else that compares one expression to a list of others. Its syntax and functionality differs from the switch statement in C. 解题&#xff1a; module top_module ( …

docker自定义镜像并使用

写在前面 本文看下如何自定义镜像。 ik包从这里 下载。 1&#xff1a;自定义带有ik的es镜像 先看下目录结构&#xff1a; /opt/program/mychinese [rootlocalhost mychinese]# ll total 16 -rw-r--r-- 1 root root 1153 Feb 5 04:18 docker-compose.yaml -rw-rw-r-- 1 el…

C语言中的内存函数你知道多少呢?

目录 ​编辑 1. memcpy的使用和模拟实现 1.1函数介绍 ​编辑 1.2函数的使用 1.3模拟实现 2. memmove的使用和模拟实现 2.1函数介绍 2.2函数的使用 2.3模拟实现 3. memset函数的使用 3.1函数介绍 3.2函数的使用 ​编辑 4. memcmp函数的使用 4.1函数介绍 4.2函数…

压力测试工具-Jmeter使用总结

目录 一.前言 二.线程组 三.线程组的组件 四.线程组-HTTP请求 1、JSON提取器 2、XPATH提取器 3、正则表达式提取器 五.线程组-断言 1、响应断言 2、JSON断言 六.创建测试 1.创建线程组 2.配置元件 3.构造HTTP请求 4.添加HTTP请求头 5.添加断言 6.添加查看结果树…

Python 连接 mysql 详解(mysql-connector-python)

文章目录 1 概述1.1 第三方库&#xff1a;mysql-connector-python1.2 可视化工具&#xff1a;navicat1.3 创建测试数据库 2 连接 mysql 数据库2.1 创建一个连接2.2 捕获连接异常2.3 从配置文件中获取连接信息 3 执行 sql 语句3.1 插入、更新、删除3.2 查询 1 概述 1.1 第三方库…