sqlAlchemy:session.query(Model.column)返回false

时间:2018-06-09 08:27:00

标签: python sql postgresql sqlalchemy

使用sqlalchemy查询自引用的表,如下所示 -

district = session.query(
    District._id, District.name, District.level,
    District.parent, District.ordering, District.description,
    functions.ST_AsGeoJSON(District.area).label('area'),....
    ,.... and some columns

).filter(
    st_contains(
        'district.area',
        st_point(lat, lng)
    )
).filter(
    District.level == float(level)
).first()

查询正确执行,但对于Column.parent列,返回 False 而不是父ID。

以下是地区的模型类

class District(Base):
__tablename__ = 'district'
_id = Column('_id', Text, primary_key=True)
_database_id = Column('_database_id', Text, primary_key=True)
_owner_id = Column('_owner_id', Text, primary_key=True)
_created_by = Column('_created_by', Text)
_updated_by = Column('_updated_by', Text)
_access = Column('_access', JSON)
_created_at = Column('_created_at', DateTime)
_updated_at = Column('_updated_at', DateTime)
name = Column(Text, nullable=False)
level = Column(DOUBLE_PRECISION, nullable=False)
parent_id = Column(
    'parent',
    Text,
    ForeignKey('district._id'),
)
parent = relationship(
    'District',
    foreign_keys='District.parent_id',
)

如果我打印查询我得到这样的东西 -

SELECT district._id AS district__id, district.name AS district_name, 
district.level AS district_level, district._id = district.parent AS parent, 
district.ordering AS district_ordering, district.description AS 
district_description, ST_AsGeoJSON(district.area) AS area...,......
FROM district
WHERE ST_contains(area, ST_SetSRID(ST_Point(22.2883291, 
114.14048449999996),4326)) AND district.level = %(level_1)s
LIMIT %(param_1)s

对于父母领域,它给出了一些奇怪的东西 - > district._id = district.parent AS parent

有人能突出我在这里做错了什么吗?

1 个答案:

答案 0 :(得分:0)

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script> <div class="container"> <div class="row"> <div class="col-6"> <h2>Add Show</h2> <form> <div class="form-group"> <label for="title">Show Title</label> <input type="text" class="form-control" id="title" placeholder="enter title" /> </div> <div class="form-group"> <label for="rating">Show rating </label> <input type="number" min="0" max="10" value="5" class="form-control" id="rating" /> </div> <button class="btn btn-outline-primary">Add show</button> </form> </div> <div class="col-6"> <h2> Show List</h2> <ul> </ul> <button class="btn btn-outline-secondary"> Delete List</button> </div> </div> </div>班级定义District中,它不是parent,而是Column。因此,要获得父级的relationship,您必须使用:

_id