【Flask】query可用参数

### query可用参数:
1. 模型对象。指定查找这个模型中所有的对象。
2. 模型中的属性。可以指定只查找某个模型的其中几个属性。
3. 聚合函数。
* func.count:统计行的数量。
* func.avg:求平均值。
* func.max:求最大值。
* func.min:求最小值。
* func.sum:求和。
`func`上,其实没有任何聚合函数。但是因为他底层做了一些魔术,只要mysql中有的聚合函数,都可以通过func调用。

 1 # coding:utf-8
 2 # Author: liangjun.chen
 3 
 4 from datetime import date
 5 from datetime import datetime
 6 from datetime import time
 7 from random import random
 8 from sqlalchemy import create_engine, Column, Integer, String, Float, func
 9 
10 from sqlalchemy.ext.declarative import declarative_base
11 from sqlalchemy.orm import sessionmaker
12 
13 HOSTNAME = '127.0.0.1'
14 PORT = 3306
15 DATABASE = 'sqlalchemy_first'
16 USERNAME = 'root'
17 PASSWORD = '123456'
18 
19 DB_URI = 'mysql+pymysql://{username}:{password}@{host}:{port}/{dbname}?charset=utf8'.format(
20         username=USERNAME, password=PASSWORD, host=HOSTNAME, port=PORT, dbname=DATABASE
21 )
22 engine = create_engine(DB_URI)
23 Base = declarative_base(engine)
24 Session = sessionmaker(engine)
25 session = Session()
26 
27 
28 class Article(Base):
29     __tablename__ = 'article'
30     id = Column(Integer, primary_key=True, autoincrement=True)
31     title = Column(String(50), nullable=False)
32     price = Column(Float, nullable=False)
33 
34     def __repr__(self):
35         return "Article<title: {}, price: {}>".format(self.title, self.price)
36 
37 Base.metadata.drop_all()
38 Base.metadata.create_all()
39 for _ in xrange(6):
40     article = Article(title='title{}'.format(_), price=random()*100)
41     session.add(article)
42 session.commit()
43 
44 # 查询结果为结果对象列表
45 articles = session.query(Article).all()
46 for arts in articles:
47     print arts
48 
49 # 查询结果为元组
50 articles = session.query(Article.title, Article.price).all()
51 print articles
52 
53 # 聚合函数
54 print session.query(func.count(Article.id)).all()
55 print session.query(func.avg(Article.price)).all()
56 print session.query(func.max(Article.price)).all()
57 print session.query(func.min(Article.price)).all()
58 print session.query(func.sum(Article.price)).all()
原文地址:https://www.cnblogs.com/chen0427/p/8635551.html