【问题标题】:flask_sqlalchemy create_all without having to import modelsflask_sqlalchemy create_all 无需导入模型
【发布时间】:2018-07-11 14:07:29
【问题描述】:

我正在尝试了解如何设置一个调用create_all 的独立脚本,而无需将我的所有模型导入其中。以下是相关文件:

db.py

from flask_sqlalchemy import SQLAlchemy

db = SQLAlchemy()

test_model.py

from db import db

class TestTable(db.model):
    id = db.Column(db.Integer, primary_key=True)
    foo = db.Column(db.String(80))

create_all.py

from db import db

db.create_all()

但是,create_all 不会做任何事情,因为它不会检测到任何注册到它的表,除非它们被导入。有没有办法在声明模型时将它们添加到“注册表”以绕过显式导入?

【问题讨论】:

    标签: python sqlalchemy flask-sqlalchemy


    【解决方案1】:

    总之,没有。在调用create_all() 之前,您必须以一种或另一种方式导入这些模型。声明性类构建Table 实例,并在构造类本身时将它们添加到MetaData。如果MetaData 不包含任何表,create_all 将什么也不做。

    换句话说,“声明模型”除非对这些声明进行评估,否则什么也不做,因此必须执行模块。从中导入就是这样做的。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多