Seed a DatabaseΒΆ

Populate a SQLAlchemy database with fake users for testing.

from sqlalchemy import Column, Integer, String, create_engine
from sqlalchemy.orm import declarative_base, Session

from smartfaker import Faker

Base = declarative_base()

class User(Base):
    __tablename__ = "users"
    id = Column(Integer, primary_key=True)
    name = Column(String, nullable=False)
    city = Column(String, nullable=False)
    country = Column(String(2), nullable=False)
    iban = Column(String(34))

engine = create_engine("sqlite:///demo.db")
Base.metadata.create_all(engine)

faker = Faker()

iban_supported = {c["country_code"] for c in faker.iban_countries()}

with Session(engine) as session:
    for code in ["us", "gb", "de", "fr"]:
        upper = code.upper()
        for addr in faker.address(code, amount=50):
            iban = faker.iban(upper)["iban"] if upper in iban_supported else None
            session.add(User(
                name=addr.get("person_name", "Anon"),
                city=addr.get("city", "?"),
                country=upper,
                iban=iban,
            ))
    session.commit()

print("Seeded 200 users.")