为什么在我的sqlalchemy init中创建了两个对象?

时间:2017-07-27 18:56:50

标签: flask sqlalchemy

这是我的模特:

class Category(db.Model):
    __tablename__='category'
    id = db.Column(db.Integer,primary_key=True)
    items = db.relationship('Item',backref='category',lazy='dynamic')
    name = db.Column(db.String(80))
    order = db.Column(db.Integer)
    private = db.Column(db.Boolean)
    color = db.Column(db.String(80),unique=False)

    def __init__(self,name,order=None,private=None):
        r = lambda: random.randint(0, 255)
        color = (r(), r(), r())
        color = ('#%02X%02X%02X' % color)
        count = db.session.query(Category).count()
        print count
        self.name = name
        self.color = color
        self.order = count+1
        self.private = 1

    def __repr__(self):
        return '<Category %r>' % self.name

我在这里创建表格:

def initialize_tables():
    db.create_all()
    c = Category(name="uncategorized")
    db.session.add(c)
    db.session.commit()

if __name__ == '__main__':
    initialize_tables()
    app.run(debug=True)

这在我的数据库中创建了两个名为“uncategorized”的类别。为什么会这样?

1 个答案:

答案 0 :(得分:1)

那是因为您app.run使用了debug=True

  

如果设置了 debug 标志,服务器将自动重新加载以进行代码更改,并在发生异常时显示调试器。

重新加载器的工作方式是在子进程中再次启动,因此if __name__ == '__main__'(以及initialize_tables)运行两次。