我有大量.create()
次呼叫依赖于另一个表格中的ForeignKey
(Users
)。但是,在实际创建用户的代码中没有任何意义。
是否有办法在SQLAlchemy中的另一个表上指定为每个外键创建的Users
条目?
例如:
class Rr(db.Model):
__tablename__ = 'rr'
id = db.Column(db.Integer, primary_key=True)
submitter = db.Column(db.String(50), db.ForeignKey('user.username'))
class User(db.Model):
__tablename__ = 'user'
username = db.Column(db.String, primary_key=True)
所以如果我调用Rr(id, submitter=John)
,是否有办法在用户表中创建John
条目(如果它尚不存在)?
我知道我可以围绕.create()
方法创建一个包装器,以便它检查submitter
并创建一个如果它不存在但是这看起来很多,因为有大量的模型希望自动创建Users
。
答案 0 :(得分:0)
我无法想到任何执行你所要求的orm或sql实现,但是有一些东西可以有效地完成你在这个SO答案中所描述的内容:Does SQLAlchemy have an equivalent of Django's get_or_create?
基本上从数据库中获取用户(如果存在),如果它没有创建它。
此方法的唯一缺点是您需要执行2次查询而不是1次查询,但我认为没有办法在一个查询中执行您所查找的内容