小编ipe*_*rik的帖子

在向会话添加对象时,SQLAlchemy是否保存顺序?

这种断言是否总是通过?换句话说,在向会话添加新对象时,SQLAlchemy是否保存顺序(在生成INSERT查询时)?

from sqlalchemy.ext.declarative import declarative_base
from sqlalchemy.orm.session import sessionmaker
from sqlalchemy.engine import create_engine
from sqlalchemy.types import Integer
from sqlalchemy.schema import Column

engine = create_engine('sqlite://')
Base = declarative_base(engine)
Session = sessionmaker(bind=engine)
session = Session()

class Entity(Base):
    __tablename__ = 'entity'
    id = Column(Integer(), primary_key=True)
Entity.__table__.create(checkfirst=True)


first = Entity()
session.add(first)

second = Entity()
session.add(second)

session.commit()
assert second.id > first.id
print(first.id, second.id)
Run Code Online (Sandbox Code Playgroud)

没有,在生产中我使用postgresql,sqlite用于测试.

python database orm sqlalchemy

11
推荐指数
1
解决办法
2164
查看次数

Python 3.6 multiprocessing.Pool 在 KeyboardInturrupt 上间歇性无法退出

我正在尝试使用multiprocessing.Pool异步方式将一些作业分派到外部进程,例如:

#!/bin/env python3
'''
    test.py
'''
import multiprocessing.util
from multiprocessing import Pool
import shlex
import subprocess
from subprocess import PIPE

multiprocessing.util.log_to_stderr(multiprocessing.util.DEBUG)

def waiter(arg):
    cmd = "sleep 360"
    cmd_arg = shlex.split(cmd)
    p = subprocess.Popen(cmd_arg, stdout=PIPE, stderr=PIPE) 
    so, se = p.communicate()
    print (f"{so}\n{se}")
    return arg

def main1():
    proc_pool = Pool(4)
    it = proc_pool.imap_unordered(waiter, range(0, 4))
    for r in it:
        print (r)

if __name__ == '__main__':
    main1()
Run Code Online (Sandbox Code Playgroud)

我希望它终止所有被调用的子进程、池工作人员及其自身SIGINT。目前,这在池大小为4

$> ./test.py
[DEBUG/MainProcess] created semlock with handle 140194873397248
[DEBUG/MainProcess] …
Run Code Online (Sandbox Code Playgroud)

python multithreading multiprocessing python-3.x

7
推荐指数
1
解决办法
1800
查看次数