SQLalchemy数据库列应该包含哪个模型来包含数据数组?

zch*_*zch 5 python attributes sqlalchemy flask

所以我正在尝试建立一个数据库,其中的行将经常被修改.例如,每小时,我想在数据库的特定部分添加一个数字.因此,如果self.checkmarks输入数据库等于3,更新数据库的这一部分的最佳方法是什么,使得self.checkmarks现在相等3, 2?我尝试建立列,db.Array但得到了属性错误:

AttributeError:'SQLAlchemy'对象没有属性'Array'

我已经找到了如何更新数据库,但我不知道通过添加到列表而不是替换来更新的最佳方法.我的方法如下,但我认为append不会起作用,因为列不能是一个数组:

ven = data.query.filter_by(venid=ven['id']).first()
ven.totalcheckins = ven.totalcheckins.append(ven['stats']['checkinsCount'])
db.session.commit()
Run Code Online (Sandbox Code Playgroud)

提前谢谢了

Ale*_*per 6

如果你真的想在SQLAlchemy中将python列表作为一个列,那么你需要看一下PickleType:

array = db.Column(db.PickleType(mutable=True))
Run Code Online (Sandbox Code Playgroud)

请注意,您必须使用该mutable=True参数才能编辑该列.SQLAlchemy将自动检测更改,并在提交后立即保存.

如果您希望pickle是人类可读的,您可以将它与json或其他足以满足您目的的转换器结合使用.

  • 使用PostgreSQL,您可以使用[ARRAY](http://docs.sqlalchemy.org/en/rel_0_9/dialects/postgresql.html#sqlalchemy.dialects.postgresql.ARRAY)列类型 (2认同)