【问题标题】:Error while uploading data in sql with python使用python在sql中上传数据时出错
【发布时间】:2026-01-19 17:30:02
【问题描述】:

我需要制作这样的数据:

- Table user
-- id
-- mail (mail)
-- password (password)
-- orders (orders, relation)

– Table dish
-- id
-- name (title)
-- price (price)
-- description (description)
-- picture (picture)
-- category (category, relation)

– Category table
-- id
-- name (title)
-- dishes (meals, ratio)
    
– The orders table
–– id
-- date
-- amount
-- status
-- mail
-- phone
-- address
-- list of dishes in the order (many2many)

我尝试在烧瓶中进行:

class User(db.Model):
    __tablename__ = 'users'
    id = db.Column(db.Integer, primary_key=True)
    mail = db.Column(db.String)
    password = db.Column(db.String)
    orders = db.relationship("Order", back_populates='user')


####!!!!!!!!!!!!!!!!!!!!!!#########
association_table = db.Table('association',
                             db.Column('meal_id', db.Integer, db.ForeignKey('meals.id')),
                             db.Column('order_id', db.Integer, db.ForeignKey('orders.id'))
                             )

class Order(db.Model):
    __tablename__ = 'orders'
    id = db.Column(db.Integer, primary_key=True)
    data = db.Column(db.String)
    summ = db.Column(db.Float)
    status = db.Column(db.String)
    mail = db.Column(db.String)
    phone = db.Column(db.String)
    adresses = db.Column(db.String)
    user = db.relationship("User")
    user_id = db.Column(db.Integer, db.ForeignKey('users.id'))
    meals = db.relationship(
        "Meals", secondary=association_table, back_populates="meals"
    )

    ####    –– список блюд в заказе(можно через запятую, можно many2many)

class Meals(db.Model):
    __tablename__ = 'meals'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String, unique=True)
    price = db.Column(db.Float)
    description = db.Column(db.String, unique=True)
    picture = db.Column(db.String, unique=True)
    category = db.relationship("Category")
    category_id = db.Column(db.Integer, db.ForeignKey('categories.id'))
    orders = db.relationship(
        "Order", secondary=association_table, back_populates="orders"
    )



class Category(db.Model):
    __tablename__ = 'categories'
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String, unique=True)
    meals = db.relationship("Meals", back_populates='category')

当我尝试将数据上传到数据库时出现错误:

sqlalchemy.exc.InvalidRequestError: Mapper 'mapped class Meals->meals' 没有属性 'meals'

我应该如何解决我的问题?

【问题讨论】:

    标签: python sql postgresql flask flask-sqlalchemy


    【解决方案1】:

    您的 back_populates 属性似乎设置不正确

    meals = db.relationship(
        "Meals", secondary=association_table, back_populates="meals"
    )
    

    应该是

    meals = db.relationship(
        "Meals", secondary=association_table, back_populates="orders"
    )
    

    orders = db.relationship(
        "Order", secondary=association_table, back_populates="orders"
    )
    

    应该是

    orders = db.relationship(
        "Order", secondary=association_table, back_populates="meals"
    )
    

    【讨论】:

      最近更新 更多