小编use*_*220的帖子

具有多个多对多关系的 SQLAlchemy

我想用 SQLAlchemy 为食谱创建一个数据库,但是我不确定我的方法是否正确。如何将数据插入到 recipe_ingredient 表?

我的做法:

一个食谱有一个名字,可以有多种成分。一种成分由数量、单位和名称组成(成分表),例如 500 毫升水。

表配方 - id,主键 - 名称(一个配方可以有多种成分,一种成分可以在多个配方中)

表recipe_ingredient

  • 外键(recipe.id)
  • 外键(金额.id)
  • 外键(单位.id)
  • 外键(ingredients.id)

表金额

  • id,主键
  • 金额(例如 500)

表单位

  • id,主键
  • 单位(例如毫升)

餐桌配料

  • id,主键
  • 成分(例如水)

代码:

recipe_ingredient = db.Table('recipe_ingredient',
                        db.Column('idrecipe', db.Integer, db.ForeignKey('recipe.id')),
                        db.Column('idingredient', db.Integer, db.ForeignKey('ingredients.id')),
                        db.Column('idunit', db.Integer, db.ForeignKey('units.id')),
                        db.Column('idamount', db.Integer, db.ForeignKey('amounts.id'))
)

class Recipe(db.Model):
    id= db.Column(db.Integer, primary_key=True, autoincrement=True)
    name= db.Column(db.VARCHAR(70), index=True)
    ingredient= db.relationship("Ingredients", secondary=recipe_ingredient, backref='recipe')
    amounts = db.relationship("Amounts", secondary=recipe_ingredient, backref='recipe')
    units= db.relationship("Units", secondary=recipe_ingredient , backref='recipe')

class Ingredients(db.Model):
    id = db.Column(db.Integer, primary_key=True, autoincrement=True)
    ingredient = db.Column(db.VARCHAR(200))

class …
Run Code Online (Sandbox Code Playgroud)

sql sqlalchemy flask-sqlalchemy

3
推荐指数
1
解决办法
2951
查看次数

标签 统计

flask-sqlalchemy ×1

sql ×1

sqlalchemy ×1