9

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

AttributeError:“SQLAlchemy”对象没有属性“数组”

我找到了如何更新数据库,但我不知道通过添加到列表而不是替换来更新的最佳方法。我的方法如下,但我认为append行不通,因为列不能是数组:

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

提前谢谢了

4

1 回答 1

7

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

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

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

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

于 2012-11-27T13:36:36.530 回答