diff --git a/anki/deck.py b/anki/deck.py index f53671f9e..32404e5a3 100644 --- a/anki/deck.py +++ b/anki/deck.py @@ -2664,7 +2664,7 @@ backupDir = os.path.expanduser("~/.anki/backups") 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 = True if path is None: @@ -2677,7 +2677,7 @@ class DeckStorage(object): # sqlite needs utf8 sqlpath = path.encode("utf-8") try: - (engine, session) = DeckStorage._attach(sqlpath, create, apsw) + (engine, session) = DeckStorage._attach(sqlpath, create, progress) s = session() metadata.create_all(engine) if create: @@ -2715,7 +2715,7 @@ class DeckStorage(object): deck.needLock = lock deck.progressHandlerCalled = 0 deck.progressHandlerEnabled = False - if not apsw: + if progress: try: deck.engine.raw_connection().set_progress_handler( deck.progressHandler, 100) @@ -2792,23 +2792,19 @@ class DeckStorage(object): return deck Deck = staticmethod(Deck) - def _attach(path, create, apsw=False): + def _attach(path, create, progress=False): "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) + if path is None: + path = "sqlite://" else: - if path is None: - path = "sqlite://" - else: - path = "sqlite:///" + path + path = "sqlite:///" + path + if progress: engine = create_engine(path, - strategy='threadlocal', - connect_args={'timeout': 2}) + connect_args={'timeout': 0}) + else: + engine = create_engine(path, + poolclass=NullPool, + connect_args={'timeout': 30}) session = sessionmaker(bind=engine, autoflush=False, autocommit=True)