### 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
