zoukankan      html  css  js  c++  java
  • 【Flask】Sqlalchemy limit, offset slice操作

    ### limit、offset和切片操作:
    1. limit:可以限制每次查询的时候只查询几条数据。
    2. offset:可以限制查找数据的时候过滤掉前面多少条。
    3. 切片:可以对Query对象使用切片操作,来获取想要的数据。可以使用`slice(start,stop)`方法来做切片操作。也可以使用`[start:stop]`的方式来进行切片操作。一般在实际开发中,中括号的形式是用得比较多的。示例代码如下:

     1 # coding:utf-8
     2 
     3 from datetime import datetime
     4 from sqlalchemy import create_engine, Column, Integer, String, DateTime
     5 
     6 from sqlalchemy.ext.declarative import declarative_base
     7 from sqlalchemy.orm import sessionmaker, relationship, backref
     8 
     9 HOSTNAME = '127.0.0.1'
    10 PORT = 3306
    11 DATABASE = 'sqlalchemy_first'
    12 USERNAME = 'root'
    13 PASSWORD = '123456'
    14 
    15 DB_URI = 'mysql+pymysql://{username}:{password}@{host}:{port}/{dbname}?charset=utf8'.format(
    16         username=USERNAME, password=PASSWORD, host=HOSTNAME, port=PORT, dbname=DATABASE
    17 )
    18 engine = create_engine(DB_URI)
    19 Base = declarative_base(engine)
    20 Session = sessionmaker(engine)
    21 session = Session()
    22 
    23 
    24 class Article(Base):
    25     __tablename__ = 'article'
    26     id = Column(Integer, primary_key=True, autoincrement=True)
    27     title = Column(String(50), nullable=False)
    28     createtime = Column(DateTime, nullable=False, default=datetime.now)
    29 
    30     def __repr__(self):
    31         return "Article<title:{}>".format(self.title)
    32 
    33 
    34 Base.metadata.drop_all()
    35 Base.metadata.create_all()
    36 
    37 for _ in xrange(100):
    38     article = Article(title='article{}'.format(_))
    39     session.add(article)
    40 session.commit()
    41 
    42 
    43 # limit
    44 articles = session.query(Article).limit(10).all()
    45 print articles
    46 
    47 # offset
    48 articles = session.query(Article).offset(10).limit(10).all()
    49 print articles
    50 
    51 # slice, sliece(start, end) 从start取到end.
    52 articles = session.query(Article).slice(10, 20).all()
    53 print articles
    54 
    55 
    56 # 切片
    57 articles = session.query(Article)[0:10]
    58 print articles
  • 相关阅读:
    QML学习笔记之一
    使用 DLL 的优点
    制作Windows的ico图标
    CentOS安装JDK
    CentOS 7中安装和配置Promethues
    查看和指定SpringBoot内嵌Tomcat的版本
    CentOS中安装Azkaban 2.5
    Centos7 安装Nodejs
    SpringBoot实用技巧札记
    SQL实用札记【SQL Sever篇】
  • 原文地址:https://www.cnblogs.com/chen0427/p/8783817.html
Copyright © 2011-2022 走看看