#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. 【agc002d】Stamp Rally

    题目大意 无向图中,每次询问从x和y分别出发,一共经过z个点,使需要走过编号最大的边最小. 解题思路 对于暴力,我们对于每个询问二分答案ans,将1~ans的边加入,用并查集维护,如果x和y在同一个并 ...

  2. 第一篇【Zabbix服务端的完整布署】

    1.环境准备 服务器版本: [root@filestore-v2 ~]# cat /etc/redhat-release CentOS Linux release (Core) 内核版本: [root ...

  3. java常见问题 ——运行报错1

    错误1 打印乱码 相关代码 response.getWriter().print(tbItem.toString()); response.setContentType("text/html ...

  4. ThinkPHP系统常量

    _ROOT__ : 网站根目录地址 __APP__ : 当前项目(入口文件)地址 __URL__ : 当前模块地址 __ACTION__ : 当前操作地址 __SELF__ : 当前 URL 地址 _ ...

  5. ZOJ - 3591 NIM

    ZOJ - 3591NIM 题目大意:给你n,s,w和代码,能生成长度为n的序列,问异或和不为0的子序列有多少个? 这是个挂羊头卖狗肉的题,和NIM博弈的关系就是要异或和不为0,一开始以博弈甚至循环节 ...

  6. JavaWeb_(Struts2框架)Struts创建Action的三种方式

    此系列博文基于同一个项目已上传至github 传送门 JavaWeb_(Struts2框架)Struts创建Action的三种方式 传送门 JavaWeb_(Struts2框架)struts.xml核 ...

  7. 关于Array.reduce的理解与拓展

    2018年1月6日 首先我要感谢我的同事徒步上山看日出在我第一份实习的时候对我的指导,现在我也开始跟他一样开始养成写博客的习惯 现在开始讨论我遇到的第一个问题,这是我在看javascript高级程序设 ...

  8. vue-cli脚手架构建了项目,想去除Eslint验证,如何设置?

    vue-cli脚手架构建了项目,想去除Eslint验证,如何设置? 在webpack.base.conf.js里面删掉下面: preLoaders: [ { test: /\.vue$/, loade ...

  9. Json文件删除元素

    方法1:delete 注意,该方法删除之后的元素会变为null,并非真正的删除!!! 举例: 原json: { "front" : { "image" : [ ...

  10. Cortex-M3 R0~R15寄存器组 & 特殊功能寄存器组

    [R0~R15寄存器组] Cortex-M3处理器拥有R0~R15的寄存器组,如: [R0~R12通用寄存器]R0~R12都是32位通用寄存器,用于数据操作.其中: R0~R7为低组寄存器,所有的指令 ...