zoukankan      html  css  js  c++  java
  • filter方法常用过滤条件

    #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 = '123456'
    
    #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)
  • 相关阅读:
    FreeRTOS移植到Cortex-M3-M4
    码位颠倒C程序
    开平方与魔数0x5F3759DF:Quake III 开源代码
    MathJax: Web 页面显示数学公式
    Notepad++ NppExport: 让你在Microsoft word 中粘贴语法高亮代码
    [转]matlab 函数三种定义方式
    机器上的几种Eclipse
    自己开发CC3000模块
    Java中的线程的生命周期大体可分为5种状态
    srand和rand的用法和联系
  • 原文地址:https://www.cnblogs.com/wuheng-123/p/9693228.html
Copyright © 2011-2022 走看看