我正在构建一个Flask应用程序,它在启动时应该读取一些tsv文件,每个文件都有相同的模式,将它们放在表格中(每个文件一个),然后用户将指定他们想要查询哪些表/文件,以及一些键。
我不知道如何做到这一点,但最好的方法似乎是指定一个架构,然后,一旦应用程序启动,读取文件并为每个文件动态创建表。我无法在SQLalchemy文档中找到任何关于如何多次使用相同模式的提及。也许我需要扩展我的架构类,但我不确定如何在启动时执行此操作。
提前致谢!
- 编辑 -
看起来这回答了我的一半问题: Flask-SQLAlchemy. Create several tables with all fields identical
所以现在我的问题是:你可以在Flask中执行上述操作,并且可以在应用程序启动时执行此操作吗?
答案 0 :(得分:2)
你可以采取两种方法。
子类化 - 为模式创建基础Mixin,并为每个具体表创建子类。如果您希望将来不同表的模式可能出现分歧,则此方法很有用。如果只需要在一个表中添加新字段,则只能在子类中添加它。 (变量db,Model等用于flask sqlalchemy quickstart)
class BaseMixin(object):
name = db.Column(String(80), unique=True)
field2 = db.Column ...
class SubClass1(BaseMixin, db.Model)
pass
class Subclass2(BaseMixin, db.Model)
additional_field_for_subclass2 = db.Column(...
pass
所有人的公用表 - 如果您确信所有表的架构都保持不变。我建议您为所有数据创建一个表,并附加一个字段 data_source ,它将指示行/数据的来源。
class CommonTable(db.Model):
data_source = db.Column(String(100) ..)
field1 = ...
field2 = ...