廢話不多說,咱們直接上**:
1、使用in查詢
def執行結果:use_in():
session =
dbsession()
users = session.query(user).filter(user.name.in_(['zhangsan','lisi'])).all()
print([user for user in users])
sql: select user.user_name as user_user_name, user.id as user_id, user.age as user_age
from user
where user.user_name in (%s, %s)
2、使用count統計
def列印sql:use_count():
session =
dbsession()
count = session.query(user).filter().count()
print(count)
select count(*) as count_1
from (select user.user_name as user_user_name, user.id as user_id, user.age as user_age
from user) as anon_1
3、使用group分組
from sqlalchemy import func列印sql:def
use_group():
session =
dbsession()
users = session.query(user.age,func.count(user.age)).group_by(user.age).all()
print([user for user in users])
use_group()
select user.age as user_age, count(user.age) as count_1
from user group by user.age
返回結果:[(12, 2), (18, 1), (24, 1)]
4、使用關聯查詢
新增角色表:
classrole(basemodel):
# 表名
__tablename__ =
'role'id =
column('id', integer, primary_key
=true, autoincrement
=true)
name =
column("role_name",string(20))
def
__repr__(self):
return
self.name
#使用者表中新增了role_id欄位定義物件
class
user(basemodel):#表名
__tablename__=
'user'id =
column('id',integer,primary_key
=true,autoincrement
=true)
name =
column("user_name",string(20))#
資料庫中的欄位名稱為:
user_name
age =
column('age', integer)
role_id =
column('role_id',integer)
#方便輸出,我們列印
user
時呼叫此方法
def
__repr__(self):
return
"id:%d,name:%s,age:%d"% (self.id, self.name, self.age)
資料表:
user表:
role表:
defsql語句:use_relation_query():
session =
dbsession()
user_role_datas = session.query(user,role).filter(user.role_id == role.id).all()
print([user_role_data for user_role_data in user_role_datas])
use_relation_query()
select user.user_name as user_user_name, user.id as user_id, user.age as user_age, user.role_id as user_role_id, `role`.role_name as role_role_name, `role`.id as role_id
from user, `role`
where user.role_id = `role`.id
結果:[(id:1,name:zhangsan,age:18, 超級管理員), (id:2,name:lisi,age:12, 超級管理員), (id:3,name:zhaoliu,age:24, 一般管理員)]
使用orm框架運算元據庫給我們增加了很多方便,不需要我們自己去寫sql,也不用關心內部實現的細節,當我們遷移的時候也不用考慮太多問題(比如從mysql遷移到oracle), 但這樣也會讓程式設計師對sql缺乏認識,寫不出有效的sql,使用orm肯定會影響系統的效能,在使用orm框架時,希望學習者去列印orm生成的sql,去了解sql如何生成的,sql也是一門語言,也要多多了解一些,不能只停留在簡單的sql上面,因為當你遇到系統瓶頸,想進一步去優化系統時,就需要你寫一些高效的sql了
努力成就非凡,請不要在最該奮鬥的年紀選擇安逸
Flask資料庫基本操作 SQLAlchemy
flask資料庫 d 使用擴充套件包flask sqlalchemy來運算元據庫 增刪改查 e 通過 python 物件來運算元據庫,在捨棄一些效能開銷的同時,換來的是開發效率的較大提公升 u 常用的sqlalchemy欄位型別 常用的sqlalchemy列選項 常用的sqlalchemy關係選項 ...
python中 python中的 與
這一部分首先要理解python記憶體機制,python中萬物皆物件。對於不可變物件,改變了原來的值,其別名 變數名 繫結到了新值上面,id肯定會改變 對於可變物件,操作改變了值,id肯定會變,而 是本地操作,其值原地修改 對於 號操作,可變物件和不可變物件呼叫的都是 add 操作 對於 號操作,可變...
python中否定for 在python中否定函式
有沒有一種方法可以否定乙個函式,使它返回負數。在我的函式中,我有條件句,每個條件句都讓這個 烏龜 移動。有沒有一種方法可以否定這一點,所以烏龜的每乙個動作都是否定的。我說的是 狀況 在def ttinterpret program interpret program as a tinyturtle ...