我想在首次创建时将某些默认值放在数据库中。 是否有可用的钩子/函数,因此它在创建db后只执行一次?
一种方法是使用Inspector并检查表/ db是否可用...然后在创建表之前设置一个标志。然后使用此标志插入默认值。
有更好的方法吗?
答案 0 :(得分:2)
我通常有一个专门用于此目的的install
函数,因为我可以在此函数中执行任何我需要的操作。但是,如果您只想启动应用程序并执行Base.metadata.create_all
,则可以使用after_create
事件。您必须测试它是否为您提供了一个metadata
个对象或多个table
对象并相应地处理它们。在此上下文中,您甚至可以使用connection
对象来插入数据。根据事务管理和数据库支持,这甚至可能意味着如果插入失败,则会回滚表创建。
根据您的需要,两种方式都可以,但如果您确定您只需要在创建后插入数据,那么事件方式实际上是最好的想法。