Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/297.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在提交会话之前获取插入的密钥_Python_Flask_Sqlalchemy_Flask Sqlalchemy - Fatal编程技术网

Python 在提交会话之前获取插入的密钥

Python 在提交会话之前获取插入的密钥,python,flask,sqlalchemy,flask-sqlalchemy,Python,Flask,Sqlalchemy,Flask Sqlalchemy,考虑到父id必须包含在子表中,我想将插入会话中的父和子表中。在我创建child对象的那一刻,parent.id是None 如何实现这一点?您可以使用刷新对数据库的更改,从而更新主键字段: class Parent(db.Model): id = db.Column(db.Integer, primary_key=True) class Child(db.Model): id = db.Column(db.Integer, primary_key=True) parent

考虑到
父id
必须包含在
表中,我想插入会话中的
表中。在我创建
child
对象的那一刻,
parent.id
None

如何实现这一点?

您可以使用刷新对数据库的更改,从而更新主键字段:

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

class Child(db.Model):
    id = db.Column(db.Integer, primary_key=True)
    parent_id = db.Column(db.Integer, db.ForeignKey('parent.id'))

parent = Parent()
db.session.add(parent)

child = Child()
child.parent_id = parent.id
db.session.add(child)

db.session.commit()
parent = Parent()
db.session.add(parent)
db.session.flush()

print parent.id  # after flush(), parent object would be automatically
                 # assigned with a unique primary key to its id field 

child = Child()
child.parent_id = parent.id
db.session.add(child)