Ima*_*Hpr 4 python sqlalchemy flask flask-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)
)
Run Code Online (Sandbox Code Playgroud)
我尝试使用此查询进行测试:
db.session.add(tags(
post_id = 1,
tag_id = 2
))
Run Code Online (Sandbox Code Playgroud)
但我遇到了这个错误:
TypeError: 'Table' object is not callable
Run Code Online (Sandbox Code Playgroud)
The*_*le1 14
对于所述问题的实际答案,您需要Insert从表中获取一个对象:
ins = tags.insert().values(post_id=1, tag_id=2)
db.engine.execute(ins)
Run Code Online (Sandbox Code Playgroud)
mas*_*lak 10
我鼓励您使用 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, primary_key=True)
post_id = Column(Integer, ForeignKey('post.id'))
session.add(Tags(tag_id=1, post_id=2))
session.commit()
Run Code Online (Sandbox Code Playgroud)
一个表中不能有两个主键,我不鼓励你明确给出 tag_id,因为它是主键,数据库自己负责索引新行,使下面的语句有效 session.add(Tags(post_id=2))
检查 SQLAlchemy 站点,他们有很棒的文档、食谱和示例!
多对多关系在两个类之间添加了一个关联表。
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)
Run Code Online (Sandbox Code Playgroud)
现在您可以向表中插入数据:
>>> page = Page()
>>> tag = Tag()
>>> page.tags.append(tag)
>>> db.session.add(page)
>>> db.session.commit()
Run Code Online (Sandbox Code Playgroud)
阅读本文了解更多信息。
| 归档时间: |
|
| 查看次数: |
14433 次 |
| 最近记录: |