JSON保存list的时候,直接赋值完整的list是没问题的,但是一旦需要原基础上append,那就一直无法更新到数据库
#原来nickname是abc
user = db.session.query(User).get(1)
user.friends = ['aa','bb']#这样没问题
db.session.add(user)
db.session.commit()
print(user.friends)#打印出来是[aa,bb]
user = db.session.query(User).get(1)
user.friends.append(['ccc'])
db.session.add(user)
db.session.commit()
print(user.friends)#打印出来还是[aa,bb]
原来是因为ls内存拷贝的问题
a = [1,2,3]
b = a
a[0] = 0
print(b)#打印出来的是[0,2,3]
解决办法
python提供了内存拷贝给我们
import copy
user = db.session.query(User).get(1)
frds = copy.copy(user.friends)
frds.append(['ccc'])
user.friends = frds
db.session.add(user)
db.session.commit()
print(user.friends)#打印出来是[aa,bb,ccc]
网友评论