我正在使用Flask-SQLAlchemy在python RESTful-API上玩我在查询2表之间的1-M关系时遇到了结构,就像 Location(1)可能有很多建筑物(m) 这就是我所做的:
我的项目结构
project
model
__init__.py
location.py
building.py
resource
__init__.py
location.py
building.py
schema
__init__.py
schema.py
app.py
database.py
这是我的模特:
class Building(db.Model):
__tablename__ = 'building'
building_code = db.Column(db.String(80), primary_key=True)
building_name = db.Column(db.String(80))
building_type = db.Column(db.String(80))
location_code = db.Column(db.Integer,
db.ForeignKey("location.location_code"), nullable=False)
locations = db.relationship("Location", back_populates="buildings",
lazy='joined')
class Location(db.Model):
__tablename__ = 'location'
location_code = db.Column(db.String(80), primary_key=True, nullable=False)
location_name = db.Column(db.String(80))
latitude = db.Column(db.String(80))
longitude = db.Column(db.String(80))
buildings = db.relationship("Building", back_populates="locations",
lazy='joined')
这是我的资源:
class BuildingList(Resource):
def get(self):
buildings = buildingModel.query.all()
results = buildings_schema.dump(buildings)
print(results)
class LocationList(Resource):
def get(self):
locations = locationModel.query.all()
results = locations_schema.dump(locations)
print(results)
当我尝试“GET”/ BuildingList时,没有错误,但是在Location()模型中没有完成。这就是我得到的“location_code”:[{},{},{},{},{},{},{},{}], 完全无效
我正在尝试将结果作为嵌套对象,例如构建{building_code:“X”,building_name:“Y”,building_type:“Z”,location_code:{LocationModel}}。例如。 我尝试打印 buildingModel.query - 它已经是SQL加入命令我认为问题在于映射对象作为我的理解,可能我错了
提前谢谢
答案 0 :(得分:0)
要查询数据库,必须首先在Flask代码中创建其类定义的对象。
从您的代码中,应查询class Building
和class Location
。所以应该是这样的:
class BuildingList(Resource):
def get(self):
buildings = Building.query.all()
results = buildings_schema.dump(buildings)
print(results)
class LocationList(Resource):
def get(self):
locations = Location.query.all()
results = locations_schema.dump(locations)
print(results)
我的代码中没有buildingModel
或locationModel
的任何定义。