## **獲取單個數據**
獲取單個數據的方法包括:
~~~
// 取出主鍵為1的數據
peter = User.query.filter_by(id=1).first()
peter.email
// 同上但是查詢一個不存在的用戶名返回None
missing = User.query.filter_by(username='missing').first()
missing is None
~~~
## **主鍵查詢**
~~~
User.query.get(1)
~~~
## **獲取數量**
~~~
User.query.count()
~~~
## **獲取所有數據**
~~~
User.query.filter().all()
// 返回: [<User u'admin'>, <User u'guest'>]
~~~
## **排序**
~~~
User.query.order_by(User.username).all()
~~~
## **限制數量**
~~~
User.query.limit(1).all()
~~~
## **模糊查詢**
~~~
User.query.filter(User.name.like('xxx%'))
~~~
## **in查詢**
~~~
query.filter(Tags.id.in_([5,6]))
~~~
## **not in查詢**
~~~
query.filter(~Tags.id.in_([1,5,6]))
~~~
## **and查詢**
~~~
from sqlchemy import and_
query.filter(and_(Tags.name == 'Python',Tags.id==2))
或者
query.filter(Tags.name == 'Python', Tags.id == 2)
~~~
## **or查詢**
~~~
from sqlalchemy import or_
query.filter(or_(Tags.name == 'Python', Tags.name == 'Flask'))
~~~
## **原生查詢**
~~~
from sqlalchemy import text
query.filter(text('id>=:value1 and id <:value2')).params(value1=2,value2=5)
~~~
## **完整sql語句查詢**
~~~
from sqlalchemy import text
query.from_statement(text("select * from tags where id=:value")).params(value=1)
~~~
## **原生查詢數據數量**
~~~
db.session.execute("SELECT COUNT(*) FROM table").scalar()
~~~
## **group by統計數據**
~~~
from sqlalchemy import func
db.session.query(Model).with_entities(Model.field, func.count(Model.field)).group_by('field').all()
~~~