0
我在使用SQLAlchemy提交數據庫更改時遇到問題,但我找不到原因。SQLAlchemy沒有對postgres提交更改
這裏是有問題的數據模型:
class EmailGroup(db.Model):
__tablename__ = 'email_group'
id = db.Column(db.Integer, primary_key=True)
name = db.Column(db.String(), unique=True, nullable=False)
data = db.Column(db.JSON)
def __init__(self, name):
self.name = name
self.data = {u'members': []}
def addUser(self, username):
data = self.data
if username not in data[u'members']:
data[u'members'].append(username)
self.data = data
這裏是服務器代碼:
@app.route('/emailgroup/<groupid>/adduser/<userid>', methods=['POST'])
@jwt_required()
def emailGroupAddUser(groupid, userid):
emailgroup = EmailGroup.query.filter_by(id=groupid).first()
if not emailgroup:
return 'Group with id ' + groupid + ' does not exist.', status.HTTP_400_BAD_REQUEST
user = User.query.filter_by(id=userid).first()
if not user:
return 'User with id ' + userid + ' does not exist.', status.HTTP_400_BAD_REQUEST
emailgroup.addUser(user.username)
print emailgroup.dumps() # Is correctly updated here
db.session.add(emailgroup)
db.session.commit()
print emailgroup.dumps() # Changes did not go through!
return jsonify(emailgroup.dumps())
我一直在使用db.session.flush()
代替add/commit
也嘗試過,這使得兩個打印報表打印正確的輸出,但實際上並未實際更新數據庫。
編輯:我也嘗試在SQLAlchemy中使用數組類型,但面臨同樣的確切問題。
您需要的[可變擴展(HTTP://docs.sqlalchemy。組織/ EN /最新/ ORM /擴展/ mutable.html)。 – univerio
[使用postgresql JSON類型與sqlalchemy列表]的可能重複(http://stackoverflow.com/questions/25300447/using-list-on-postgresql-json-type-with-sqlalchemy) – neuront