#encoding: utf-8

from sqlalchemy import create_engine,Column,Integer,String,Float,func,and_,or_
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm import sessionmaker
from random import randint HOSTNAME = '127.0.0.1' PORT = 3306 DATABASE = 'first_sqlalchemy' USERNAME = 'root' PASSWORD = '' #dialect+driver://username:password@host:port/database
DB_URI = "mysql+pymysql://{username}:{password}@{host}:{port}/" \
"{db}?charset=utf8".format(username=USERNAME,password=PASSWORD,host=HOSTNAME,port=PORT,db=DATABASE) engine = create_engine(DB_URI) Base = declarative_base(engine) # Session = sessionmaker(engine)
# session = Session() session = sessionmaker(engine)() #Session(**local_kw) class Article(Base):
__tablename__ = 'article' id = Column(Integer,primary_key=True,autoincrement=True) title = Column(String(50),nullable=False) price = Column(Float,nullable=False) content = Column(String(100)) def __repr__(self):
return '<Article(title:%s)>'%self.title # Base.metadata.drop_all()
#
# Base.metadata.create_all()
#
# for x in range(6):
# article = Article(title='title%s'%x,price=randint(0,100))
# session.add(article)
# session.commit() # 1、equal 等于的意思
article = session.query(Article).filter(Article.id == 1).first() article_title = session.query(Article).filter(Article.title == 'title1').first()
print(article)
print(article_title) # 2、not equal 不等于的意思 article_title_not_equal = session.query(Article).filter(Article.title != 'title0').all() print(article_title_not_equal) #3、like #注意:如果不查询,直接打印显示原生sql,不用first()或 all()方法
article_title_like = session.query(Article).filter(Article.title.like('title%') ).all()
#相当于sql select * from article where title like '%title%'; print(article_title_like)
#插入一条数据的sql :insert into article values(null,'abc','100'); # 4、ilike(不区分大小写)
article_title_ilike = session.query(Article).filter(Article.title.ilike('title%') )
print(article_title_ilike)
#SELECT article.id AS article_id, article.title AS article_title, article.price AS article_price FROM article
# WHERE lower(article.title) LIKE lower(%(title_1)s) # 5、in (在某某里面) #为什么用in_,因为要避开关键字in
article_title_in = session.query(Article).filter(Article.title.in_(['title1','title2'])).all() print(article_title_in) #原生sql SELECT article.id AS article_id, article.title AS article_title, article.price AS article_price
# FROM article
# WHERE article.title IN (%(title_1)s, %(title_2)s)%('title1','title2'),这是格式化字符串,防止sql注入 #6、not in (不在某某里面) article_title_not_in = session.query(Article).filter(Article.title.notin_(['title1','title2'])).all() print(article_title_not_in) #not in (另一种写法) ~取反的意思 article_title_not_in_1 = session.query(Article).filter(~Article.title.in_(['title1','title2'])).all() print(article_title_not_in_1) # 7、is null 判断某个字段是否为空 # alter table article add column content text; 添加一列,
# 修改原先好的类别 alter table article modify column content varchar(100);
# update article set content='python or go' where id =7; 修改一条记录 is_null_content = session.query(Article).filter(Article.content == None).all() print(is_null_content) # not is null 不为空 not_is_null_content = session.query(Article).filter(Article.content != None) print(not_is_null_content) '''
SELECT article.id AS article_id, article.title AS article_title, article.price AS article_price,
article.content AS article_content
FROM article
WHERE article.content IS NOT NULL
''' #8、and 和 title_and_content = session.query(Article).\
filter(Article.title == 'python or go',Article.content == 'python or go').all()
print(title_and_content) #另一种显示方式 title_and_content_1 = session.query(Article).\
filter(and_(Article.title == 'python or go',Article.content == 'python or go'))
print(title_and_content_1) #原生sql显示SELECT article.id AS article_id, article.title AS article_title,
# article.price AS article_price, article.content AS article_content
# FROM article
# WHERE article.title = %(title_1)s AND article.content = %(content_1)s #9.or
title_or_content = session.query(Article).filter\
(or_(Article.title == 'python or go',Article.content == 'python or go')).all()
print(title_or_content)

filter方法常用过滤条件的更多相关文章

  1. Informatica 常用组件Filter之二 过滤条件

    过滤条件可以使用转换语言输入.过滤条件是返回 TRUE 或 FALSE 的表达式.例如,如果您要过滤出员工薪水低于 $30,000 的行,可输入以下条件: SALARY > 30000 可以使用 ...

  2. wireshark常用过滤条件

    抓取指定IP地址的数据流: 如果你的抓包环境下有很多主机正在通讯,可以考虑使用所观察主机的IP地址来进行过滤.以下为IP地址抓包过滤示例: host 10.3.1.1:抓取发到/来自10.3.1.1的 ...

  3. magento addFieldToFilter()方法常用的过滤条件

    记录一下Magento模型集合Model Collection中addFieldToFilter()方法常用的过滤条件.以下参数也同样适用于产品实体的addAttributeToFilter()方法. ...

  4. 使用filter方法过滤集合元素

    文章转自https://my.oschina.net/nenusoul/blog/658238 Problem 你想要筛选出集合中的一些元素形成一个新的集合,这些元素都是满足你的筛选条件的. Solu ...

  5. Wireshark常用过滤使用方法

    过滤源ip.目的ip. 在wireshark的过滤规则框Filter中输入过滤条件.如查找目的地址为192.168.101.8的包,ip.dst==192.168.101.8:查找源地址为ip.src ...

  6. 基于jquery的has()方法以及与find()方法以及filter()方法的区别详解

    has(selector选择器或DOM元素)   将匹配元素集合根据选择器或DOM元素为条件,检索该条件在每个元素的后代中是否存在,将符合条件的的元素构成新的结果集. 下面举一个例子: <ul& ...

  7. Filter Conditions 过滤条件

    <pre name="code" class="html">Filter Conditions 过滤条件: Rsyslog 提供4种不同类型的&qu ...

  8. laravel的filter()方法的使用 (方法使用给定的回调函数过滤集合的内容,只留下那些通过给定真实测试的内容)

    filter 方法使用给定的回调函数过滤集合的内容,只留下那些通过给定真实测试的内容: $collection = collect([1, 2, 3, 4]); $filtered = $collec ...

  9. 数组filter方法对数组元素进行过滤

    Array.prototype.filter对数组中元素进行过滤 /** * @method reduce * @param {number} item 当前迭代的数组元素 * @param {num ...

随机推荐

  1. Composer 安装方法

    在windows下安装的方法 方法一:使用安装程序 这是将 Composer 安装在你机器上的最简单的方法. 下载并且运行 Composer-Setup.exe,它将安装最新版本的 Composer ...

  2. 关于int指令

    1.关于int指令 格式:int n     n为中断类型码: 作用:     调用n号中断程序:   指令“int n”的执行过程:     1]获取中断类型码n     2]标志寄存器入栈,IF. ...

  3. js文件下载

    因为公司后端忙得无法给批量下载的api,就我们前端自己把多张图片打包成zip下载,zip打包我们用的是jszip,下面是js实现下载的三种方法: 利用HTML download 属性 var a = ...

  4. java+上传大视频文件断点续传

     上周遇到这样一个问题,客户上传高清视频(1G以上)的时候上传失败. 一开始以为是session过期或者文件大小受系统限制,导致的错误. 查看了系统的配置文件没有看到文件大小限制, web.xml中s ...

  5. kali随便写 kali更新源配置

    ./ +文件目录  是执行文件的意思 kali修改更新源及更新 进入源文件进行修改 leafpad /etc/apt/sources.list (其实系统本身就自带了更新源,去掉其注释也是可以的,现在 ...

  6. [CSP-S模拟测试]:序列(二分答案+树状数组)

    题目传送门(内部题98) 输入格式 第一行一个整数$n$,第二行$n$个整数$a_1\sim a_n$,第三行$n$个整数$b_1\sim b_n$. 输出格式 一行一个整数表示$\max(r-l+1 ...

  7. IDEA的小技巧:1.Java代码不被识别2.目录下创建的文件夹所显示样式不是文件夹,而是"包"图标样式的问题

    在Idea上面一个正常的代码结构是这个样子的,但是有的时候,比如说当我们直接在一个文件夹中随便的创建的时候就会出现一些问题,比如说想让某个地方为代码目录,某个地方为资源目录的时候,直接的创建目录是不成 ...

  8. hdu 1166 线段树 奇兵布阵

    #include<iostream> using namespace std; ; )*];//n个叶子就有2*n-4*n个节点 ]; int n; void getup(int root ...

  9. C# how to properly make a http web GET request

    C# how to properly make a http web GET request EDIT 23/11/17 Updated to throw out examples using asy ...

  10. CMD命令行管道命令

    一.什么是管道命令 管道命令能够将一个命令的执行结果经过筛选,只保留我们需要的信息. 如 dir 命令会显示目录下所有文件夹和文件,可以使用管道命令| findstr "" 将di ...