2

我想在首次创建数据库时将某些默认值放入数据库中。是否有可用的钩子/函数,以便在创建数据库后只执行一次?

一种方法是使用检查器并检查表/数据库是否可用......然后在创建表之前设置一个标志。然后使用此标志插入默认值。

有更好的方法吗?

4

1 回答 1

2

我通常有一个专门install为此目的调用的函数,因为我可以在这个函数中做任何我需要的事情。但是,如果您只想启动应用程序并执行此操作Base.metadata.create_all,则可以使用该after_create事件。您必须测试它是否给您一个metadata对象或多个table对象并相应地处理它。在这种情况下,您甚至可以获得一个connection可用于插入数据的对象。根据事务管理和数据库支持,这甚至可能意味着如果插入失败,表创建会被回滚。

根据您的需要,两种方式都可以,但如果您确定只需要在创建后插入数据,那么事件方式实际上是最好的主意。

于 2013-09-30T08:41:13.287 回答