filter和exclude筛选==拓展使用

这篇博客详细介绍了Python中ORM操作数据库时,filter和exclude的使用技巧,包括等值、不等值、范围、包含等条件筛选,并提供了具体的代码示例,如筛选创建时间大于某个日期、年份等于特定年份等操作。

filter筛选:

是查询出符合设定条件的查询集

 

等于:直接筛选

 

双下划线 __

 

大于: __gt

举例:

筛选比创建日期大的日期(加上last()就是大的日期最后一条),并且返回一个值

created_time__gt=con.

created_time__gt=con.created_time
context["previous_blog"] = Blog.objects.filter(created_time__gt=con.created_time).last()

 

大于等于: __gte

 

小于: __lt

 

小于等于:__lte

 

包含: __contains(加 i 忽略大小写)

 

开头是 : __startswith

 

结尾是 : __endswith

 

其中之一 : __in

 

范围 : __range

 

 

exclude筛选:

是查询出不符合设定条件的查询集

查询方法一样

 

大于: __gt

 

context["previous_blog"] = Blog.objects.exclude(created_time__gt=con.created_time)

这样查询出来的查询集是:返回的值是创建时间不大于本条信息创建时间的值

filter筛选的拓展使用:

 

context["year"] = Blog.objects.filter(created_time__year=2017)

筛选出年份为2017年的,

 

car_messages.filter(Q(car_out_time__month=month) | Q(car_out_time__day=day)):

 

获取当前时间的方法:

month = datetime.datetime.now().strftime("%m") # 当前月 都是转换成字符串,可以直接与数据库日期进行对比 
day = datetime.datetime.now().strftime("%d") #  当前日
time = datetime.datetime.now().strftime("%Y-%m-%d") # 当前年月日, print(car_messages.filter(car_out_time__lte=today).count())
if car_messages.filter(Q(car_out_time__lte=time)):         
    print(car_messages.filter(Q(car_out_time__lte=time) | (Q(car_out_time__day=month) & Q(car_out_time__day=day))).count())
    context["SUCCESS"] = "success" 
 # 这个牛逼,直接获取当前日期,进行加减获取哪一天日期,直接可以与数据库日期进行对比。 
# 获取明天的时间,先获取当天的时间减去 -1 就是明天的信息
today = timezone.now().date() - datetime.timedelta(days=-1) 

 

<think>嗯,用户的问题是关于在使用expdp或impdp时'exclude=comment'参数的作用用途。首先,我需要回忆一下Oracle数据泵工具中的exclude参数的功能。根据之前的引用[2][3],用户之前可能接触过expdp中的includeexclude参数,用来过滤导出的对象类型。 用户提到'exclude=comment',所以需要确定这里的comment指的是什么。在Oracle中,comment通常指表或列的注释信息。因此,当使用exclude=comment时,应该是在导出或导入过程中排除这些注释信息。 接下来,要验证这个理解是否正确。比如,查看Oracle官方文档或可靠资料,确认exclude参数支持的对象类型中包含COMMENT。可能还需要考虑不同的上下文,比如是排除表注释还是列注释,或者两者都包括。 另外,用户可能想知道使用这个参数的实际应用场景。比如,当不需要迁移注释时,可以加快导出速度或减少导出文件的大小。或者在某些环境中,注释可能包含敏感信息,需要排除。 需要注意的是,exclude参数的语法是否正确。例如,正确的用法应该是exclude=object_type[:name_clause],所以comment可能属于某个对象类型下的子类型。例如,可能属于SCHEMA_EXPORT/TABLE/COMMENT这样的路径,但用户可能简写为comment。 还需要检查之前的引用中是否有相关例子。引用[3]中提到了处理对象类型如SCHEMA_EXPORT/TABLE/STATISTICS/TABLE_STATISTICS,但没有直接提到COMMENT。但根据经验,Oracle确实支持排除注释。 总结来说,exclude=comment的作用是在使用数据泵导出或导入时,排除表或列的注释信息。这样可以减少导出文件的大小,或者在不需要注释时简化迁移过程。需要确认正确的对象类型路径,可能需要使用更详细的路径,比如SCHEMA_EXPORT/TABLE/COMMENT,但用户可能简写为comment,实际使用时可能需要完整路径。 最后,要确保回答清晰,结构正确,并包含相关示例,如示例命令,以帮助用户理解如何应用这个参数。</think>### 关于 `exclude=comment` 的含义及作用 在 Oracle 数据泵工具(`expdp`/`impdp`)中,`exclude=comment` 的作用是 **在导出或导入过程中排除与“注释”相关的元数据**。具体来说: 1. **功能定义** `exclude=comment` 会跳过以下对象的注释信息: - 表的注释(通过 `COMMENT ON TABLE` 添加) - 列的注释(通过 `COMMENT ON COLUMN` 添加) 2. **典型用途** - **减少导出文件体积**:如果注释信息对迁移或备份无实质作用,可省略以节省空间[^2][^3]。 - **避免敏感信息泄露**:注释中可能包含开发或运维备注,需排除时使用。 - **加速处理速度**:减少元数据处理步骤,提升导出/导入效率。 3. **语法示例** ```bash expdp admin/admin directory=mydir dumpfile=export.dmp logfile=export.log exclude=comment ``` 此命令导出时不会包含任何表或列的注释信息。 4. **注意事项** - 若需更精准控制(如仅排除表的注释),需指定完整对象类型路径,例如: ```bash exclude=SCHEMA_EXPORT/TABLE/COMMENT ``` - `include` `exclude` 参数不可同时作用于同一对象类型[^3]。
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值