sqlalchemy查询结果类型简析

时间:2023-03-10 00:22:26
sqlalchemy查询结果类型简析

Sqlalchemy的查询方式有很多种,例如可以查询全部,可以查询符合条件的,可以查询指定字段的。那么这么多种查询,返回的结果是不是一样的呢?作本文记录分析结果。

Sql_forengin.py

 #coding:utf-

 from sqlalchemy import create_engine
from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy import Column,Integer,String,DATE,ForeignKey #导入外键
from sqlalchemy.orm import relationship #创建关系 engine = create_engine("mysql+mysqldb://root:123@localhost:3306/test",
encoding="utf-8") Base = declarative_base() #生成orm基类 class Student(Base):
__tablename__ = "student"
id = Column(Integer,primary_key=True)
name = Column(String(),nullable=False)
register_day = Column(DATE,nullable=False) #def __repr__(self):
# return "<{0} name:{1}>".format(self.id,self.name) class StudyRecord(Base):
__tablename__ = "study_record"
id = Column(Integer,primary_key=True)
day = Column(Integer,nullable=False)
status = Column(String(),nullable=False)
stu_id = Column(Integer,ForeignKey("student.id"))
student = relationship("Student",backref="my_study_record") #def __repr__(self):
# return "<{0} name:{1} stu_id:{2}>".format(self.student.name,self.day,self.stu_id) Base.metadata.create_all(engine) #创建表

select.py

 #coding:utf-

 from sqlalchemy.orm import  sessionmaker
from sqlalchemy import create_engine
from sql_foreign import Student,StudyRecord engine = create_engine("mysql+mysqldb://root:123@localhost:3306/test",)
Session_class = sessionmaker(bind=engine)
session = Session_class() stu_obj = session.query(StudyRecord).filter_by(id = ).first()
#stu_obj = session.query(StudyRecord.id,StudyRecord.day).all()
#stu_obj = session.query(StudyRecord).all()
#print(stu_obj.student.id) #获取study_record的数据
#print(stu_obj.student.name) #获取study_record的数据
#print(stu_obj.student.register_day) #获取study_record的数据 print stu_obj
print type(stu_obj)

数据库数据

sqlalchemy查询结果类型简析

一、查询出所有

 stu_obj = session.query(StudyRecord).all()

sqlalchemy查询结果类型简析

分析:使用.all()查询出来的就是一个list列表。在这个列表中存储的是对象class。

二、查询符合条件

查询符合条件的第一个

stu_obj = session.query(StudyRecord).filter_by(id = ).first()

sqlalchemy查询结果类型简析

分析:查询first返回为一个对象

查询所有符合条件

stu_obj = session.query(StudyRecord).filter_by(day = ).all()

sqlalchemy查询结果类型简析

分析:查询出符合添加的所有的值返回为一个list列表,列表中为所有的对象

查询结果没有指定所有或者第一个

stu_obj = session.query(StudyRecord).filter_by(day = )

sqlalchemy查询结果类型简析

分析:查询出来的是一个对象,不过返回值很特别,是一个查询语句

三、查询指定的字段

stu_obj = session.query(StudyRecord.id,StudyRecord.day).all()

sqlalchemy查询结果类型简析

分析:查询出来的是一个列表,列表中是对象。虽然很像元祖,但确实是对象。

四、查询的返回结果为唯一一个

stu_obj = session.query(StudyRecord).filter_by(day = ).one()

sqlalchemy查询结果类型简析

分析:返回值为一个对象

总结:sqlqlchemy查询的结果一定是对象,根据返回值的不同可能会有一定差异。

sqlalchemy查询结果类型简析