我用的数据库是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
希望以上能对遇到此类问题的有所帮助。