【问题标题】:inserting data in assotiation table with three columns in flask sqlachemy在烧瓶 sqlalchemy 中用三列在关联表中插入数据
【发布时间】:2021-08-23 03:36:29
【问题描述】:

我有两个在烧瓶炼金术中具有多对可能关系的表:

users_chats_association = db.Table(
    "users_chats",
    db.Column("user_id", db.Integer, db.ForeignKey("users.id")),
    db.Column("chat_id", db.Integer, db.ForeignKey("chats.id")),
    db.Column('some_number', db.String)
)


class User(db.Model):
    __tablename__ = "users"
    id = db.Column(db.Integer, primary_key=True)
    name = db.Column(db.String)
    chats = db.relationship(
        "Chat", secondary=users_chats_association, back_populates="users"
    )


class Chat(db.Model):
    __tablename__ = "chats"
    id = db.Column(db.Integer, primary_key=True)
    title = db.Column(db.String)
    users = db.relationship(
        "User", secondary=users_chats_association, back_populates="chats"
    )

如果我想插入值,我会使用这样的代码:

user = User(name='first_user')
db.session.add(user)
chat = Chat(title='First_chat')
db.session.add(chat)
chat.users.append(user)
db.session.commit()

但此代码插入到前两列的关联表中。我应该如何在第三个“some_number”列中插入值?

【问题讨论】:

标签: python flask sqlalchemy many-to-many


【解决方案1】:
id_of_need_user = (User.query.filter(User.name=='first_user').first())

update_query = update(users_chats_association).\
    where(users_chats_association.c.user_id==id_of_need_user.id).\
    values(some_number='12345888')

db.session.execute(update_query)
db.session.commit()

【讨论】:

    猜你喜欢
    • 2021-06-03
    • 2013-11-22
    • 2021-11-22
    • 2018-12-01
    • 1970-01-01
    • 2018-06-19
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多