Python 继承+;外键:缺少ID
我有一个用户,它在创建时有两个文件夹=>Python 继承+;外键:缺少ID,python,sqlalchemy,Python,Sqlalchemy,我有一个用户,它在创建时有两个文件夹=>home\u文件夹和trash\u文件夹。每个文件夹都有一个创建者(用户) 文件夹是通过连接继承的条目(在我的问题中可能并不重要) 当我这样做时: new_user = User(name=name) home_folder = Folder(name="Home", folder_type=Folder.FolderType.home, creator=new_user
home\u文件夹
和trash\u文件夹
。每个文件夹都有一个创建者(用户)
文件夹是通过连接继承的条目(在我的问题中可能并不重要)
当我这样做时:
new_user = User(name=name)
home_folder = Folder(name="Home",
folder_type=Folder.FolderType.home,
creator=new_user)
trash_folder = Folder(name="Trash",
folder_type=Folder.FolderType.trash,
creator=new_user)
session.add(home_folder)
session.add(trash_folder)
session.add(new_user)
session.commit()
我正确获取文件夹:
id folder_type creator_id
1 home 1
2 trash 1
但我的用户不正常:
id name home_folder_id trash_folder_id
1 Remi <null> <null>
id name home\u folder\u id trash\u folder\u id
1雷米
这是我的主要代码:
编辑:
所以,事实上,我的问题有点像…“我如何在魔法中添加更多的魔法?”。我的用户中没有填充“我的主页”文件夹和“我的垃圾”文件夹是有道理的,因为我没有专门设置它们的地方
我想我必须在.flush()
或.commit()
之后进行这些矫揉造作,这样就创建了用户,也创建了文件夹
我很高兴知道是否有一种方法可以动态链接它们,比如说我们正在创建的文件夹与用户的home_文件夹相关联
谢谢 看起来您已经创建了文件夹并添加了名为的用户,但您尚未将该用户关联到主/垃圾文件夹。创建所有三个对象后,仍然需要链接它们。例如:
session.add(home_folder) # Home folder is created
session.add(trash_folder) # Trash folder is created
session.add(new_user) # New User is Created
new_user.home_folder = home_folder # Give the New User a Home Folder
new_user.trash_folder = trash_folder # Give the New User a Trash Folder
session.commit()
嗨,大卫!谢谢你抽出时间来帮我。我试图通过向用户添加文件夹来解决这个问题,但我认为,因为我使用了
backref
来处理关系,所以我不必做这些事情。我试过了,以防万一,我触发了:sqlalchemy.exc.CircularDependencyError:检测到循环依赖性。
您认为发生了什么?