python访问sqlite(sqlalchemy)(orm方式)
文章目录sqlalchemy的理解Base declarative_base()的作用?__repr__方法查询db.query()并不是查询query.count()和query.offset()才是查询?查询-拼接条件分组关联查询新增修改删除安装依赖开始接触sqlalchemy不太习惯感觉有点抽象。后来换个视角瞬间就理解了它就相当于java中的hibernate属于封装程度很高的orm框架。如果说相似度sqlalchemy≈hibernatemybatis-plusmybatis。注这里的不是说谁大谁小而是相似度。sqlalchemy的理解理解最重要。Base declarative_base()的作用?看到这个代码一开始有点蒙不理解什么意思。1、定义规则所有表的实体类都继承Base类。declarative_base()会创建一个全局MetaData(元数据对象)记录所有表、字段、索引等相当于都注册到MetaData里了这样就可以通过Base.metadata.create_all(bindengine)一行代码创建所有表。2、建立起实体类和表之间的映射关系。__repr__方法repr是representation(表现形式、展现)的意思。也就是说将对象展示为可读的对象有点类似__str__但一般用于数据库对象。def__repr__(self):returnfSalesOrder(id{self.id}, order_no{self.order_no}, status{self.status})查询还是那句话检索(查询)一定是数据库中最有搞头的部分你修改、删除还能写出花来?db.query()并不是查询query.count()和query.offset()才是查询?对db.query()相当于设置查询语句并不是实际查询的动作。query()方法里面填要查出的字段通过label()方法指定列别名相当于sql中的as。# 执行查询querydb.query(SalesOrder)ifconditions:queryquery.filter(and_(*conditions))# 获取总数totalquery.count()# 分页查询ordersquery.offset((request.page-1)*request.page_size).limit(request.page_size).all()查询-拼接条件conditions[]ifrequest.order_no:conditions.append(SalesOrder.order_norequest.order_no)ifrequest.status:conditions.append(SalesOrder.statusrequest.status)querydb.query(SalesOrder)# 先定义查询ifconditions:queryquery.filter(and_(*conditions))# 再拼接查询条件分组querydb.query(SalesOrder.status,func.count(SalesOrder.id).label(count),func.max(SalesOrder.created_at).label(latest_created_at),func.min(SalesOrder.created_at).label(earliest_created_at)).group_by(SalesOrder.status).having(func.count(SalesOrder.id)2)关联查询主要有outerjoin()、join()两个方法并没有其他方法了但是左连接等也可以通过这两个方法实现。# 执行 JOIN 查询querydb.query(SalesOrder.id.label(order_id),SalesOrder.order_no,SalesOrder.status,SalesOrder.created_at,Checkpoint.thread_id,Checkpoint.checkpoint_id,Checkpoint.checkpoint_data,Checkpoint.created_at.label(checkpoint_created_at)).outerjoin(Checkpoint,SalesOrder.idCheckpoint.id)关联查询的idcondition的时候设置这里只写关联条件就好了。新增修改删除安装依赖pip install sqlalchemy
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2610174.html
如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!