Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/346.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 继承+;外键:缺少ID_Python_Sqlalchemy - Fatal编程技术网

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:检测到循环依赖性。
您认为发生了什么?