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

时间:2012-11-25 06:04:27

标签: 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()

非常感谢提前

1 个答案:

答案 0 :(得分:6)

如果您真的想在SQLAlchemy中将python列表作为列,那么您需要查看PickleType

array = db.Column(db.PickleType(mutable=True))

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

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