Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/332.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python SQLAlchemy中的链指定列_Python_Sqlalchemy - Fatal编程技术网

Python SQLAlchemy中的链指定列

Python SQLAlchemy中的链指定列,python,sqlalchemy,Python,Sqlalchemy,我对SQLAlchemy有一个奇怪的问题,这个问题很少发生 我有两个映射类: class cQuantum(Base): __tablename__ = 'mesQuantum' quanID = Column(UNIQUEIDENTIFIER, primary_key=True, autoincrement=False) quantityTransferred = Column(Float) quantityActual = Column(Float)

我对SQLAlchemy有一个奇怪的问题,这个问题很少发生

我有两个映射类:

class cQuantum(Base):
    __tablename__ = 'mesQuantum'
    quanID = Column(UNIQUEIDENTIFIER, primary_key=True, autoincrement=False)
    quantityTransferred = Column(Float)
    quantityActual = Column(Float)
    received = Column(DateTime)

class cTransfer(Base):
    __tablename__ = 'mesTransfer'
    transferID = Column(UNIQUEIDENTIFIER, primary_key=True, autoincrement=False)
    quanID = Column(UNIQUEIDENTIFIER, ForeignKey('mesQuantum.quanID'))
    quantityTransferred = Column(Float)
    quantityActual = Column(Float)
    finished = Column(DateTime)
    quanObj = relationship('cQuantum', foreign_keys=[quanID], lazy='joined')
在我的应用程序中,我执行以下操作:

try:
    session = saSession()
    trans = session.query(cTransfer).filter(#some expression).first()
    trans.finished = value
    trans.quantityTransferred = trans.quantityActual = value2
    trans.quanObj.quantityTransferred = trans.quanObj.quantityActual = value2
    trans.quanObj.received = value
    session.commit()
except Exception as e:
    session.rollback()
finally:
    session.close()
在99%的情况下,一切正常

但有时仅更新cQuantum和CtrTransfer中的QuantityTransfer列,其余列(quantityActual、finished和received)保持为无(数据库中为NULL,默认值)。 value和value2都不是无

尤其令我困惑的是,这种说法是如何可能的

obj.col = obj2.col2 = value
两个绑定到单个会话的对象在提交时在数据库中产生不同的结果


很抱歉问了这么长的问题。不知道如何用更少的话来解释它。:)

你不会碰巧有多个工人同时这么做吧?价值的来源是什么?您的会话配置是什么?不,没有多个工作进程。value和value2实际上也是SQLAlchemy对象的属性,该对象在前面代码段之前关闭的另一个会话中预先填充。我不能保证填充了“value”(datetime)(应该有,datetime存在于相应的数据库记录中),但“value2”(float)肯定是填充的,因为它被分配给QuantityTransfer列。丢失会话的模型对象可能具有尚未加载其值的属性iirc,虽然这并不能解释为什么另一个收到一个值,而另一个没有。如果你将赋值移动到单独的位置,会发生什么?这就是我要尝试的。我将首先将分离对象中的两个值存储在两个单独的变量中,然后将这些变量中的每一列赋值1赋值-1行,希望这样做。然而,奇怪的行为。。。