【发布时间】:2020-11-21 17:41:26
【问题描述】:
我正在尝试在 SqlAlchemy 中建立 OneToOne 关系,其中孩子的表 ID 已经是外键,但它抛出了错误:
sqlalchemy.orm.exc.DetachedInstanceError: Instance <Vetor at 0x7fcc81307070> is not bound to a Session; attribute refresh operation cannot proceed
下面,两个模型和服务..
class CUBE(types.UserDefinedType):
def get_col_spec(self, **kw):
return "CUBE"
class Vetor(db.Model):
id = db.Column(db.Integer, primary_key=True)
data = db.Column(db.DateTime(), default=db.func.now())
vetor = db.Column(CUBE)
sistema_origem_id = db.Column(db.Integer)
def __init__(self, vetor, sistema_origem):
self.vetor = vetor
self.sistema_origem_id = sistema_origem
def __repr__(self):
return "<Vetor(id='%s', data='%s', vetor='%s', sistema_origem_id='%s')>" % (self.id, self.data, self.vetor, self.sistema_origem_id)
class FBinary(db.Model):
id = db.Column(db.Integer, db.ForeignKey("vetor.id"), primary_key=True)
binario = db.Column(db.LargeBinary)
contenttype = db.Column(db.String())
def __init__(self, id, binario, contenttype):
self.id = id
self.binario = binario
self.contenttype = contenttype
def __repr__(self):
return "<FBinary(id='%s', binario='%s', contentype='%s')>" % (self.id, self.binario, self.contenttype)
试图同时提交的类:
....code.....
face = Vetor(vetor, 1 )
db.session.add(face)
binario = FBinary(id=face, binario=foto_bytes, contenttype='')
db.session.add(binario)
db.session.commit()
【问题讨论】:
标签: python flask sqlalchemy foreign-keys one-to-one