使用Flask-Sqlalchemy从某个模型创建各种表

时间:2019-05-01 17:52:38

标签: python sqlalchemy flask-sqlalchemy

从文档中,我可以看到如何创建以后创建表所必需的模型。

我想要创建各种表,每个表具有不同的__tablename__属性,但是所有表都具有相同的属性,因此只需要一个Model类即可用作所有表的模型。

我调查了db.metadata选项,但是文档指出它是为只读目的而设计的。

EDIT1:

要通过模型创建表,我创建

class Sample(db.Model):
    //code here

然后从模型创建表,运行脚本并执行

manage.py migrate
manage.py update

在运行时创建上述表的正确方法是什么?

EDIT2:

我发现a question on SO与我的相似,我尝试了接受的答案,该提议提出使用type来创建表,但这似乎并没有达到预期的效果。

在我的app/my_model.py文件中,我有一个模型,该模型最初是从db.Model继承的,但是后来在提到的问题中的示例之后将其删除。在我的app/routes.py中,当我运行type(name.title(), (MyModel, db.Model), { '__tablename__' : name })并打印给定对象时,得到<class 'app.routes.name'>,而不是预期的<class 'flask_sqlalchemy.Name'>

我提出了一个单独的问题,因为我认为这个问题比现有问题涵盖的范围要广。

谢谢!

1 个答案:

答案 0 :(得分:0)

我认为我设法使其正常工作(一个测试,该测试创建了该表,然后检查该表是否存在于数据库中!通过了,尽管print语句仍会打印意外消息)。

我不得不

    MyModel中定义app/my_model.py时,从db.Model继承
  • 设置__abstract__ = True

type命令现在为:type(name.title(), (MyModel, db.Model), { '__tablename__' : name })

现在,我正在处理数据插入,因为我必须找到一种方法来指定应将其插入哪个表。 Class xxx is not mapped错误...但这是另一个问题! (对此,如果有人有任何评论,将不胜感激!)。

感谢所有提供帮助的人!