Populating database with dummy data

For testing purposes, it is convenient to be able to populate database tables with dummy data. web2py includes a Bayesian classifier already trained to generate dummy but readable text for this purpose.

Here is the simplest way to use it:

  1. from gluon.contrib.populate import populate
  2. populate(db.mytable, 100)

It will insert 100 dummy records into db.mytable. It will try to do intelligently by generating short text for string fields, longer text for text fields, integers, doubles, dates, datetimes, times, booleans, etc. for the corresponding fields. It will try to respect requirements imposed by validators. For fields containing the word “name” it will try to generate dummy names. For reference fields it will generate valid references.

If you have two tables (A and B) where B references A, make sure to populate A first and B second.

Because population is done in a transaction, do not attempt to populate too many records at once, particularly if references are involved. Instead, populate 100 at a time, commit, loop.

  1. for i in range(10):
  2. populate(db.mytable, 100)
  3. db.commit()

You can use the Bayesian classifier to learn some text and generate dummy text that sounds similar but should not make sense:

  1. from gluon.contrib.populate import Learner, IUP
  2. ell=Learner()
  3. ell.learn('some very long input text ...')
  4. print ell.generate(1000, prefix=None)