关于Flask-SQLAlchemy模型数据类型的问题

flask-sqlalchemy

#1

我用的数据库是PostgreSQL10,数据表中有一个字段是数组类型,在models中是这样定义的:
tag = db.Column(db.ARRAY(TEXT()))

运行提示:NameError: name ‘TEXT’ is not defined

把TEXT换成VARCHAR也不行。
请问怎么解决?
谢谢!!

但是导入TEXT后又提示:
sqlalchemy.exc.InvalidRequestError: Table ‘text_tbl’ is already defined for this MetaData instance. Specify ‘extend_existing=True’ to redefine options and columns on an existing Table object.
是怎么回事?

自己解决了,是因为在命令行改变数据类型后在模型中没有改导致的。并且修改数据类型并使模型与其对应后还要重启服务器才行。

另外我这里是通过flask-sqlacodegen根据原数据库自动生成的模型,自动生成模型的时候对于数组类型例如db.ARRAY(VARCHAR())或db.ARRAY(TEXT()),flask-sqlacodegen并没有自动导入VARCHAR或TEXT,那么在模型自动生成后就要自己手动加上,也就是:
from sqlalchemy import VARCHAR

from sqlalchemy import TEXT

希望以上能对遇到此类问题的有所帮助。


#2

你没导入TEXT

from ... import TEXT