SQLAlchemy實戰詳解

2021-06-25 15:01:36 字數 3344 閱讀 2103

感謝朋友支援本部落格,歡迎共同**交流,由於能力和時間有限,錯誤之處在所難免,歡迎指正!

better me的部落格

:blog.csdn.net/tantexian

#簡單查詢

print(session.query(user).all())  

print(session.query(user.name, user.fullname).all())  

print(session.query(user, user.name).all())  

#帶條件查詢

print(session.query(user).filter_by(name='user1').all())  

print(session.query(user).filter(user.name == "user").all())  

print(session.query(user).filter(user.name.like("user%")).all())  

#多條件查詢

print(session.query(user).filter(and_(user.name.like("user%"), user.fullname.like("first%"))).all())  

print(session.query(user).filter(or_(user.name.like("user%"), user.password != none)).all())  

#sql過濾

print(session.query(user).filter("id>:id").params(id=1).all())  

#關聯查詢 

print(session.query(user, address).filter(user.id == address.user_id).all())  

print(session.query(user).join(user.addresses).all())  

print(session.query(user).outerjoin(user.addresses).all())  

#聚合查詢

print(session.query(user.name, func.count('*').label("user_count")).group_by(user.name).all())  

print(session.query(user.name, func.sum(user.id).label("user_id_sum")).group_by(user.name).all())  

#子查詢

stmt = session.query(address.user_id, func.count('*').label("address_count")).group_by(address.user_id).subquery()  

print(session.query(user, stmt.c.address_count).outerjoin((stmt, user.id == stmt.c.user_id)).order_by(user.id).all())  

#exists

print(session.query(user).filter(exists().where(address.user_id == user.id)))  

print(session.query(user).filter(user.addresses.any()))  

以下為對映類:

classuser(base):  

__tablename__ = "users"

id = column("id", integer, primary_key=true)  

name = column("name", string)  

fullname = column("fullname", string)  

password = column("password", string)  

addresses = relation("address", order_by="address.id", backref="user")  

def__init__(self, id=none, name=none, fullname=none, password=none, addresses=): 

self.id = id  

self.name = name  

self.fullname = fullname  

self.password = password  

self.addresses = addresses  

def__repr__(self):  

return"".format(name=self.name, fullname=self.fullname, password=self.password, addresses=self.addresses)  

classaddress(base):  

__tablename__ = "address"

id = column(integer, primary_key=true)  

email_address = column(string, nullable=false)  

user_id = column(integer, foreignkey("users.id"))  

#user = relation("user", backref="addresses", order_by="address.id")

def__init__(self, email_address=none):  

self.email_address = email_address  

def__repr__(self):  

return"".format(email_address=self.email_address, user=self.user.name)  

sqlalchemy的兩種方法詳解

工作需要,用到了sqlalchemy,經過近乙個月的不斷學習和探索實踐,現在整理一下,以免將來沒地方找。下面的講解我們統一把資料庫的相關操作封裝在乙個類裡面。先來說第一種 from sqlalchemy import create engine from sqlalchemy.ext.declara...

Linux vmstat命令實戰詳解

vmstat命令是最常見的linux unix監控工具,可以展現給定時間間隔的伺服器的狀態值,包括伺服器的cpu使用率,記憶體使用,虛擬記憶體交換情況,io讀寫情況。這個命令是我檢視linux unix最喜愛的命令,乙個是linux unix都支援,二是相比top,我可以看到整個機器的cpu,記憶體...

Linux vmstat命令實戰詳解

vmstat命令是最常見的linux unix監控工具,可以展現給定時間間隔的伺服器的狀態值,包括伺服器的cpu使用率,記憶體使用,虛擬記憶體交換情況,io讀寫情況。這個命令是我檢視linux unix最喜愛的命令,乙個是linux unix都支援,二是相比top,我可以看到整個機器的cpu,記憶體...