【发布时间】:2013-12-19 03:58:45
【问题描述】:
我正在使用 SQLAlchemy 访问 PostgreSQL 数据库,并且我这样定义对象:
class SessionLog(Base):
__tablename__ = 'session_log'
id = Column(Integer, primary_key=True)
recordFile = Column('record_file', String(128))
appSrcPorts = Column('app_src_ports', ARRAY(Integer))
info5 = Column('info5', String(100))
然后我像这样选择并更新 session_log 表:
session = Session()
sessionLog = session.query(SessionLog).filter_by(id=sessionLogId).first()
sessionLog.appSrcPorts.append(1)
session.merge(sessionLog)
session.commit()
但奇怪的是,在我调用 merge() 和 commit() 之后,“app_src_ports”列没有更新。 我找到了一个丑陋的方法让它工作,在 append() 行之前,添加这个:
sessionLog.appSrcPorts = list(sessionLog.appSrcPorts)
谁能告诉我为什么?
【问题讨论】:
-
你的解决方案(sessionLog.appSrcPorts = list(sessionLog.appSrcPorts) 使它成为一个列表作为一个魅力:)
标签: python sql postgresql sqlalchemy