一. 安装forgerypy包
&pip install forgerypy
二. 修改|-app/models.py
1. 修改User表
class User(UserMixin, db.Model): #... @staticmethod def generate_fake(count=100): import forgery_py from random import seed from sqlalchemy.exc import IntegrityError seed() for i in range(count): u = User(email=forgery_py.internet.email_address(), username=forgery_py.internet.user_name(), password=forgery_py.lorem_ipsum.word(), confirm=True, name=forgery_py.name.full_name(), location=forgery_py.address.city(), about_me=forgery_py.lorem_ipsum.sentence(), member_since=forgery_py.date.date(True)) db.session.add(u) try: db.session.commit() except: db.session.rollback()
2.修改Post表
class Post(db.Model): @staticmethod def generate_fake(count=100): import forgerypy from random import randint, seed user_count = User.query.count() seed() for i in range(count): u = User.query.offset(randint(0, user_count-1)).first() p = Post(body=forgery_py.lorem_ipsum.sentences(randint(1, 3)), timestamp=forgery_py.date.date(True), author=u) db.session.add(p) db.session.commit()
三. 生成数据
>>User.generate_fake(100)
>>Post.generate_fake(100)
四. 查看数据库
发现User表中增加了近似100条记录, 因为存在生成相同虚拟数据的可能, 数据库会话的提交操作会回滚, 所以实际生成的记录可能小于10条
Post表也是如此。