【发布时间】:2016-05-26 23:07:52
【问题描述】:
我有成行的数据文件。每件事都有一个基因列在其中。这是一对多的关系,因为每个基因可以是多个事物的一部分,但每个事物只能有一个基因。
想象一下大致像这样的模型:
class Gene(db.Model):
__tablename__ = "gene"
id = db.Column(db.Integer, primary_key=True)
name1 = db.Column(db.Integer, index=True, unique=True, nullable=False) # nullable might be not right
name2 = db.Column(db.String(120), index=True, unique=True)
things = db.relationship("Thing", back_populates='gene')
def __init__(self, name1, name2=None):
self.name1 = name1
self.name2 = name2
@classmethod
def find_or_create(cls, name1, name2=None):
record = cls.query.filter_by(name1=name1).first()
if record != None:
if record.name2 == None and name2 != None:
record.name2 = name2
else:
record = cls(name1, name2)
db.session.add(record)
return record
class Thing(db.Model):
__tablename__ = "thing"
id = db.Column(db.Integer, primary_key=True)
gene_id = db.Column(db.Integer, db.ForeignKey("gene.id"), nullable=False, index=True)
gene = db.relationship("Gene", back_populates='thing')
data = db.Column(db.Integer)
我想批量插入很多东西,但我担心使用
db.engine.execute(Thing.__table__.insert(), things)
我不会有数据库中的关系。有没有办法通过批量添加来保留关系,或者以某种方式顺序添加这些关系,然后在以后建立关系?所有the documentation about bulk adding 似乎都假设您想要插入非常简单的模型,当您的模型更复杂时,我对如何执行此操作有点迷茫(上面的示例是一个简化的版本)。
-- 更新 1--
This answer 似乎表明没有真正的解决方案。
This answer 似乎证实了这一点。
【问题讨论】:
标签: flask sqlalchemy flask-sqlalchemy