如何将行插入表 sqlalchemy 对象?

新手上路,请多包涵

我有一个名称为标签的表对象,但我不知道如何向其中插入新行

这是我的表对象:

 tags = db.Table('tags',
    db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'), primary_key=True),
    db.Column('Post_id', db.Integer, db.ForeignKey('post.id'), primary_key=True)
)

我尝试使用此查询进行测试:

 db.session.add(tags(
        post_id = 1,
        tag_id = 2
))

但是我遇到了这个错误:

 TypeError: 'Table' object is not callable

原文由 user8424164 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 454
2 个回答

多对多关系在两个类之间添加一个关联表。

 tags = db.Table('tags',
        db.Column('tag_id', db.Integer, db.ForeignKey('tag.id'), primary_key=True),
        db.Column('page_id', db.Integer, db.ForeignKey('page.id'), primary_key=True)
    )

class Page(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    tags = db.relationship('Tag', secondary=tags, lazy='subquery',
        backref=db.backref('pages', lazy=True))

class Tag(db.Model):
    id = db.Column(db.Integer, primary_key=True)

现在您可以向表中插入数据:

 >>> page = Page()
>>> tag = Tag()
>>> page.tags.append(tag)
>>> db.session.add(page)
>>> db.session.commit()

阅读 本文 以获取更多信息。

原文由 Gabe 发布,翻译遵循 CC BY-SA 4.0 许可协议

我鼓励您使用 SQLAlchemy ORM 方法。在您的情况下,它将是这样的:

 from sqlalchemy import Column, ForeignKey, Integer
from sqlalchemy.ext.declarative import declarative_base

Base = declarative_base()

class Tags(Base):
    __tablename__ = 'tags'

    tag_id = Column(Integer, ForeignKey('tags.id'), primary_key=True)
    post_id = Column(Integer, ForeignKey('posts.id'), primary_key=True)

session.add(Tags(tag_id=1, post_id=2))
session.commit()

检查 SQLAlchemy 站点,他们有很棒的文档、食谱和示例!

原文由 maslak 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题