如何设置sqlalchemy表达语言中的约束?

时间:2013-01-08 07:51:41

标签: database sqlalchemy

我有一个表,我们称之为table_A,它有一个引用table_B的外键。 Table_B还有一个引用table_A的外键。要为table_A插入记录,我必须配置最初延迟的外键约束。我正在尝试首先创建table_A,第二次创建table_B进入table_A的pk,然后最终将table_B的pk输入table_A。

我正在使用sqlalchemy表达式语言(而不是orm),并且我无法将约束设置为延迟。我尝试通过引擎的连接手动设置它,但它不起作用。我确实在table_A上设置了声明为DEFERRABLE INITIALLY DEFERRED的外键。在交易开始时,我有:

connection.execute("begin")
connection.execute("set constraints deferred")

但是,引用table_B的table_A上的fk约束继续被违反。我尝试查看表,连接和事务类,但没有找到任何明确推迟事务约束的东西。我正在使用Postgresql;任何帮助将不胜感激。

1 个答案:

答案 0 :(得分:1)

感谢@a_horse_with_no_name的建议,但是列上仍然存在NOT NULL约束,并且'NOT NULL'约束不可延迟。