我使用sqlalchemy金字塔,pyramid_tm和postgresql来测试这个.
DBSession = scoped_session(sessionmaker(extension=ZopeTransactionExtension()))
Base = declarative_base()
class MyList(Base):
id = Column(Integer, primary_key=True)
lst = Column(JSON)
Run Code Online (Sandbox Code Playgroud)
我正在使用postgresql 9.3+并使用JSON类型.当我这样做
mylst = MyList(lst=[])
Run Code Online (Sandbox Code Playgroud)
我可以看到在数据库上也创建了空[]列表,并且
def view(request):
mylst = DBSession.query(MyList).get(1)
mylst.lst.append('45')
print(DBSession.is_active, DBSession.is_modified(mylst))
Run Code Online (Sandbox Code Playgroud)
我可以在数据库中看到['45'],并打印返回
True, True
Run Code Online (Sandbox Code Playgroud)
在下一个请求上继续[编辑](上面已经提交)
def view(request):
mylst = DBSession.query(MyList).get(1)
mylst.lst.append('65')
print(DBSession.is_active, DBSession.is_modified(mylst))
Run Code Online (Sandbox Code Playgroud)
db不会更新,它仍然是['45']并且打印返回
True, False
Run Code Online (Sandbox Code Playgroud)
我做错了什么或这是一个错误?