Accessing the Anki database with Python: Working with a specific deck
I previously wrote about accessing the Anki database using Python on mac OS. Extending that post, I’ll show how to work with a specific deck in this short post.
To use a named deck you’ll need its deck ID. Fortunately there’s a built-in method for finding a deck ID by name:
col = Collection(COLLECTION_PATH)
dID = col.decks.id(DECK_NAME)
Now in queries against the cards
and notes
tables we can apply the deck ID to restrict them to a certain deck. For example, to find all of the cards currently in the learning stage:
query = """SELECT COUNT(id) FROM cards where type = 1 AND did = dID"""
learningCards = col.db.scalar(query)
print 'There are {:.5g} learning cards.'.format(learningCards)
And close the collection:
col.close()
See also:
- Working with the Anki database on mac OS
- Open the Anki database from Python
- Anki database structure - A thorough explanation of all the tables and fields
- All of my articles about Anki