【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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM