从文档中,我可以看到如何创建以后创建表所必需的模型。
我想要创建各种表,每个表具有不同的__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'>
。
我提出了一个单独的问题,因为我认为这个问题比现有问题涵盖的范围要广。
谢谢!
答案 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
错误...但这是另一个问题! (对此,如果有人有任何评论,将不胜感激!)。
感谢所有提供帮助的人!