apsw -> nullpool

This commit is contained in:
Damien Elmes 2009-09-21 20:48:04 +09:00
parent d02c1fb70a
commit 2e2444f488

View file

@ -2664,7 +2664,7 @@ backupDir = os.path.expanduser("~/.anki/backups")
class DeckStorage(object): class DeckStorage(object):
def Deck(path=None, backup=True, lock=True, apsw=False): def Deck(path=None, backup=True, lock=True, progress=False):
"Create a new deck or attach to an existing one." "Create a new deck or attach to an existing one."
create = True create = True
if path is None: if path is None:
@ -2677,7 +2677,7 @@ class DeckStorage(object):
# sqlite needs utf8 # sqlite needs utf8
sqlpath = path.encode("utf-8") sqlpath = path.encode("utf-8")
try: try:
(engine, session) = DeckStorage._attach(sqlpath, create, apsw) (engine, session) = DeckStorage._attach(sqlpath, create, progress)
s = session() s = session()
metadata.create_all(engine) metadata.create_all(engine)
if create: if create:
@ -2715,7 +2715,7 @@ class DeckStorage(object):
deck.needLock = lock deck.needLock = lock
deck.progressHandlerCalled = 0 deck.progressHandlerCalled = 0
deck.progressHandlerEnabled = False deck.progressHandlerEnabled = False
if not apsw: if progress:
try: try:
deck.engine.raw_connection().set_progress_handler( deck.engine.raw_connection().set_progress_handler(
deck.progressHandler, 100) deck.progressHandler, 100)
@ -2792,23 +2792,19 @@ class DeckStorage(object):
return deck return deck
Deck = staticmethod(Deck) Deck = staticmethod(Deck)
def _attach(path, create, apsw=False): def _attach(path, create, progress=False):
"Attach to a file, initializing DB" "Attach to a file, initializing DB"
if apsw:
import apsw
acon = apsw.Connection(unicode(path, "utf-8"))
def connect():
pycon = sqlite.connect(acon, isolation_level=None)
return pycon
engine = create_engine('sqlite:///', creator=connect)
else:
if path is None: if path is None:
path = "sqlite://" path = "sqlite://"
else: else:
path = "sqlite:///" + path path = "sqlite:///" + path
if progress:
engine = create_engine(path, engine = create_engine(path,
strategy='threadlocal', connect_args={'timeout': 0})
connect_args={'timeout': 2}) else:
engine = create_engine(path,
poolclass=NullPool,
connect_args={'timeout': 30})
session = sessionmaker(bind=engine, session = sessionmaker(bind=engine,
autoflush=False, autoflush=False,
autocommit=True) autocommit=True)