0
단일 DB 파일이 있고 여러 프로세스에서 연결을 열려고합니다 (반드시 동시 일 필요는 없습니다).파이썬 다중 처리로 다중 sqlite3 연결 열기
내가보고있는 것은 DB가 주 프로세스에서 열리면 연결이 닫혀 있더라도 하위 프로세스에서 동일한 DB를 열 수 없다는 것입니다.
나는 이것을 보여주기 위해 작은 예제를 만들었습니다
import sqlite3
import multiprocessing
DB='cache.sqlite'
def connect():
conn=sqlite3.connect(DB, check_same_thread=False, detect_types=sqlite3.PARSE_DECLTYPES,timeout=1)
print 'Opened connection'
conn.commit()
conn.close()
connect()
multiprocessing.Process(target=connect, args=()).start()
이 인쇄 하나의 '오픈 연결'자식 프로세스를 열려면 실패로 실행.
마스터 프로세스의 연결 줄에 주석을 추가하면 자식 프로세스가 파일을 성공적으로 엽니 다.
현재 무슨 일입니까?
빈 파일로 인해 연결이 두 번 열렸습니다. – wrwrwr
SQLite는 동시 액세스에 제한이있는 것으로 알려져 있습니다. 위의 코드는 단순화되어 작동하지만 수정 구문을 추가하자마자 중단 될 수 있습니다. –
감사합니다. @ wrwrwr, 예, 내 파일은 실제로 채워진 DB입니다. –