使用与SQLAlchemy的批量插入相关的值

时间:2015-02-09 23:35:28

标签: python sqlalchemy flask-sqlalchemy psql

我正在通过SQLAlchemy向我的PSQL数据库提交一些值。我有两张桌子,父母和孩子。现在我通过执行许多example seen here来创建一个要插入每个数据库的行列表。这工作正常,我可以有效地插入父表和子表。但是,我还需要子项指向它使用的父项的外键。考虑到这一点,我一直在尝试使用Correlated Update。我的代码如下所示:

select_pid = select([Parent.id]).where(
Parent.parentname == json_data["parent"]).limit(1)

child_list.append({"parentforeignid": select_pid})

还插入了其他内容。为了简洁起见,只是出示了外国人的身份。

最后填充列表后,我运行:

db.engine.execute(Child.__table__.insert(), child_list)

给出了这个错误:

sqlalchemy.exc.ProgrammingError: (ProgrammingError) can't adapt type 'Select'

并将字段显示为:

<sqlalchemy.sql.selectable.Select at 0x10c91a390; Select object>

同样,如果我不使用select语句,则此批量插入运行正常,但是没有指向父级的外键。这是因为在创建子值时通常不会创建父级。谁知道我怎么能做这个工作?或者如何更好地解决问题?我的另一个解决方案是迭代子列表并在插入子项之前查询父ID,但这似乎很麻烦。

0 个答案:

没有答案