須要的全部操做和檢視數據的基礎功能數據庫
能夠把session看做保存對數據庫的改動的地方。session
user=User(usernmae='fake_name')函數
db.session.add(user)網站
db.session.commit()設計
------------------對象
users=User.query.all()字符串
usersget
-----------------string
users=User.query.limit(10).all()it
users=User.query.order_by(User.username).all()
Users=User.query.order_by(User.username.desc()).all()
-----------
user=User.query.first()
user.username
--------------
user=User.query.get(1)
user.username
-------
這些函數都是能夠鏈式調用的 也就是說
-------
users=User.query.order_by(
User.username.desc()
).limit(10).first()
-----------
MBTI
------------
pagination(分頁)
能夠能夠用來替代first() all() 專門用來設計用來實現分頁功能的 大多數網站都會用 分頁的方式來展現長列表
返回的是pagination對象 而不是數據模型對象的 列表
好比咱們想獲得前10個虛構的 Post對象
Post.query.pagination(1,10)
page=User.query.pagination(1,10)
返回這一頁包含的數據對象
page.items
返回這一頁的頁數
page.pages
返回總頁數
上一頁和下一頁是否有對象能夠顯示
page.has_prev,page.has_next
------------------
返回上一頁和下一頁的pagintation對象
若是不存在的話返回當前頁
page.prev()
page.next()
-----------
條件查詢
----------
SQL最擅長的東西 就是根據一些條件的集合 得到過濾後的數據
要獲得 知足一系列條件的數據列表
query.filter_by過濾器
------
users=Users.query.filter_by(username='fake_name').all()
----------
users=Users.query.order_by(User.username.desc())
.filter_by(username='fake_name')
.limit(2)
.all()
----------
user=User.query.filter(
User.id>1
).all()
--------
整數 integers 字符串 strings
日期 dates
整數integer 浮點float
日期date
SQL in or not的操做
------
修改數據
使用first() all()
等方法返回數據以前 調用update方法能夠修改已存在數據的值
User.query.filter_by(username='fake_name').update(
{'password':'test'
}
)
#對數據模型的修改已被自動加入session()中
db.session.commit()
----------
刪除數據
從數據庫中刪除一行數據
------------
不要太認真嘛
-----------
user=User.query.filter_by(
username='fake_ame'
).first()
db.session.delete(user)
db.session.commit()
---------------------
數據模型之間的關聯
--------------
模型之間能夠互相創建引用
每篇文章都有一個特定的做者
經過把每一個做者的文章跟這個做者相關聯
方便地獲取這個做者的全部文章 一對多關係的一個範例-
-------------
lazy=