Python Queue不包含来自SQLAlchemy查询的所有结果集数据

时间:2017-10-06 13:50:59

标签: python sqlalchemy multiprocessing

我原本以为我错误地将数据传递给我的子流程,所以我问了一个问题How do I pass object data to other Python multiprocessing processes?。它关闭了一个副本,但经过对该问题的更多研究以及根据其他链接实现队列,我不认为这是问题所在。

部分数据正在进入我的进程,其他一些部分并不是我认为是SQLAlchemy对象的一部分。

什么被放入队列:

Data going into the Queue

我在离开队列的过程中看到的内容:

Processing receiving end of Queue

所以我认为问题归结为SQLAlchemy及其状态。如何在不丢失所有这些数据的情况下将SQLAlchemy结果集传递给进程?

示例代码。

def test_mp(queue):
    while True:
        file = queue.get(True)

results = dbsession.query(Raw_records).limit(10).all()

inqueue = mp.Queue()
for item in results:
    inqueue.put(item)
pool = mp.Pool(4, test_mp, (inqueue,))
pool.close()
pool.join()

编辑:想出" drill_parameters_record"强调它为什么不回来。

必须做.options(joinedload(Raw_records.drill_parameters_record))

但是raw_xml列仍然是空白的。它是一个自定义类型,因此它是一个对象。我用它来创造它。 SQLAlchemy declaring custom UserDefinedType for XML in MSSQL

0 个答案:

没有答案