8

I open a lmdb database using this code:

    lmdb_env = lmdb.open(source_path, readonly=True)

How can I count the number of records in this database?

Caleb Kleveter
  • 11,170
  • 8
  • 62
  • 92
trminh89
  • 877
  • 2
  • 10
  • 17
  • I don't understand the close votes. Just because a question is short or basic, that doesn't mean it's too broad or unclear. This is a straightforward, specific question about coding that can have a definite correct answer, and I see no reason why it's inappropriate for Stack Overflow's format. I'm voting to reopen. I respectfully ask in advance that anyone who votes to leave closed please post a comment explaining why. – Adi Inbar Dec 22 '15 at 21:47

4 Answers4

8

I think it should be like this:

lmdb_env = lmdb.open(lmdb_file_name, readonly=True)
print lmdb_env.stat()

Then it prints the directory that Jaco pasted here.

Community
  • 1
  • 1
GieBur
  • 137
  • 1
  • 8
3
    env = lmdb.open('db file path', max_dbs = ' > 0')
    with env.begin() as tx:
        db = env.open_db(b'db name', txn=tx)
        print(env.stat()) 
        print(tx.stat(db)) # this gives stats about one specific db

env.stat() gives entries of the main database. tx.stat(db) gives entries of one named database.

zjk
  • 2,043
  • 3
  • 28
  • 45
1

You can use event.stat(). It will return the following dictionary with entries detailing the number of records in this database:

{'branch_pages': 1040L,
'depth': 4L,
 'entries': 3761848L,
 'leaf_pages': 73658L,
 'overflow_pages': 0L,
 'psize': 4096L}
Alex
  • 21,273
  • 10
  • 61
  • 73
1

I found a simple solution using for loop. Here it is:

count = 0
for key, value in lmdb_env.cursor():
        count = count + 1  

However, I think there should be a better way using pre-defined function.

Caleb Kleveter
  • 11,170
  • 8
  • 62
  • 92
trminh89
  • 877
  • 2
  • 10
  • 17