一. 安装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表也是如此。