SQLAlchemy实战详解

来源:互联网 发布:知乎体格式 编辑:程序博客网 时间:2024/06/10 04:19
  1. 感谢朋友支持本博客,欢迎共同探讨交流,由于能力和时间有限,错误之处在所难免,欢迎指正!

    如有转载,请保留源作者博客信息。

    Better Me的博客:blog.csdn.net/tantexian

    如需交流,欢迎大家博客留言。


  2. #简单查询  
  3. print(session.query(User).all())  
  4. print(session.query(User.name, User.fullname).all())  
  5. print(session.query(User, User.name).all())  
  6.   
  7. #带条件查询  
  8. print(session.query(User).filter_by(name='user1').all())  
  9. print(session.query(User).filter(User.name == "user").all())  
  10. print(session.query(User).filter(User.name.like("user%")).all())  
  11.   
  12. #多条件查询  
  13. print(session.query(User).filter(and_(User.name.like("user%"), User.fullname.like("first%"))).all())  
  14. print(session.query(User).filter(or_(User.name.like("user%"), User.password != None)).all())  
  15.   
  16. #sql过滤  
  17. print(session.query(User).filter("id>:id").params(id=1).all())  
  18.   
  19. #关联查询   
  20. print(session.query(User, Address).filter(User.id == Address.user_id).all())  
  21. print(session.query(User).join(User.addresses).all())  
  22. print(session.query(User).outerjoin(User.addresses).all())  
  23.   
  24. #聚合查询  
  25. print(session.query(User.name, func.count('*').label("user_count")).group_by(User.name).all())  
  26. print(session.query(User.name, func.sum(User.id).label("user_id_sum")).group_by(User.name).all())  
  27.   
  28. #子查询  
  29. stmt = session.query(Address.user_id, func.count('*').label("address_count")).group_by(Address.user_id).subquery()  
  30. print(session.query(User, stmt.c.address_count).outerjoin((stmt, User.id == stmt.c.user_id)).order_by(User.id).all())  
  31.   
  32. #exists  
  33. print(session.query(User).filter(exists().where(Address.user_id == User.id)))  
  34. print(session.query(User).filter(User.addresses.any()))  

以下为映射类:
  1. class User(Base):  
  2.     __tablename__ = "users"  
  3.       
  4.     id = Column("id", Integer, primary_key=True)  
  5.     name = Column("name", String)  
  6.     fullname = Column("fullname", String)  
  7.     password = Column("password", String)  
  8.       
  9.     addresses = relation("Address", order_by="Address.id", backref="user")  
  10.       
  11.     def __init__(self, id=None, name=None, fullname=None, password=None, addresses=[]): 
  12.         self.id = id  
  13.         self.name = name  
  14.         self.fullname = fullname  
  15.         self.password = password  
  16.         self.addresses = addresses  
  17.           
  18.     def __repr__(self):  
  19.         return "<User '{name}' '{fullname}' '{password}' {addresses}>".format(name=self.name, fullname=self.fullname, password=self.password, addresses=self.addresses)  
  20.   
  21. class Address(Base):  
  22.     __tablename__ = "address"  
  23.       
  24.     id = Column(Integer, primary_key=True)  
  25.     email_address = Column(String, nullable=False)  
  26.     user_id = Column(Integer, ForeignKey("users.id"))  
  27.       
  28.     #user = relation("User", backref="addresses", order_by="Address.id")  
  29.       
  30.     def __init__(self, email_address=None):  
  31.         self.email_address = email_address  
  32.           
  33.     def __repr__(self):  
  34.         return "<Address ({email_address}) user={user}>".format(email_address=self.email_address, user=self.user.name)  
0 0
原创粉丝点击