django是有orm操做的 可想而知 那麼flask也是有orm操做的,其實flask的orm操做的使用和djnago的是差很少的 html
django的orm操做進行條件篩選的時候後面跟着的是objectspython
django
表名.objects.語句
flask的是query
表名.objects.語句
eg:
django:
User.objects.filter(條件).first
flask:
User.query.filter_by(條件).first
經常使用查詢語句:sql
all() 查詢全部 filter_by / filter 單個查詢 filter_by 不須要指定是哪一個類的哪一個屬性,只須要制定屬性及其目標值就能夠了, 而且只能寫具體的值不能寫模糊值 filter filter中指定查詢條件的時候須要指定類名的前綴。能夠指定模糊值 order_by 排序
類名.query獲得的結果就爲原始查詢集django
加上各類的過濾器的方法 最終返回的結果 爲數據查詢集 都使用數據查詢集flask
類名.query.all()app
User.query.all() # 查詢User表中的全部數據
類名.query.filter([類名.屬性名 條件操做符 值])spa
User.query.filter() #返回全部 User.query.filter(User.age>20) #查詢年齡大於20的數據 User.query.filter(User.age>20,User.age<40) #查詢年齡大於20的數據 and 小於40
類名.query.filter_by(屬性名=值...)code
data = User.query.filter_by(id=2) data = User.query.filter_by(id>2) #錯誤寫法 不能夠使用模糊查到 data = User.query.filter_by(id=2,age=27)
offset(num)orm
User.query.filter().offset(2)
limit(num)htm
User.query.filter(User.age>30).limit(2) 查到的結果只取兩個
User.query.offset(2).limit(2) 也是隻取兩個
默認是升序
data = User.query.order_by(User.age) #升序
data = User.query.order_by(-User.age) #降序
User.query.first() == User.query.get(2)
查詢成功返回對象 查詢失敗 返回None
User.query.get(2)
User.query.filter(User.username.contains('7')) #username中包含數字7的數據
User.query.filter(User.username.like('李%')) #以李做爲開頭的
User.query.filter(User.username.startswith('李')) # 以姓李的開頭 User.query.filter(User.username.endswith('6')) # 以6爲結尾的
__gt__
__ge__
__lt__
__le__
>
<
>=
<=
==
!=
.
User.query.filter(User.age.in_([27,12,1,30,40,50]))
User.query.filter(User.username.isnot(None))
多個條件 用逗號隔開,爲and操做
from sqlalchemy import and_
User.query.filter(and_(User.age==27,User.id==2))
from sqlalchemy import or_
@main.route('/and/') def myAnd(): data = User.query.filter(or_(User.age==27,User.id==2)) data = User.query.filter(and_(User.username.like('%6%')),or_(User.age>=27,User.id==2)) return render_template('show.html',data=data)
from sqlalchemy import not_
@main.route('/and/') def myAnd(): # data = User.query.filter(not_(User.age>27,User.id==1))\ #錯誤寫法只能給一個條件取反 data = User.query.filter(not_(User.age>27)) return render_template('show.html',data=data)
data = User.query.filter(not_(User.age>27)).count()
模塊:
pip install flask-migrate
pip install flask-script
from flask_migrate import Migrate,MigrateCommand from flask_sqlalchemy import SQLalchemy app = Flask(__name__) db = SQLalchemy(app) migrate = Migrate(app,db=db) manager = Manager(app) manager.add_command('db',MigrateCommand)
python manage.py db init
python manage.py db migrate
python manage.py db upgrade
注意
若是當前存在 模型 可是執行建立遷移文件的時候 提示沒有任何改變的時候 須要查看當前的模型類是否有使用(導入)