|
| 1 | +import sqlite3 |
| 2 | +from faker import Faker |
| 3 | +import random |
| 4 | + |
| 5 | +# Initialize Faker |
| 6 | +fake = Faker() |
| 7 | + |
| 8 | +# Connect to SQLite database (or create it) |
| 9 | +conn = sqlite3.connect('employees.db') |
| 10 | +cursor = conn.cursor() |
| 11 | + |
| 12 | +# Create employees table |
| 13 | +cursor.execute(''' |
| 14 | +CREATE TABLE IF NOT EXISTS employees ( |
| 15 | + employee_id INTEGER PRIMARY KEY, |
| 16 | + first_name TEXT NOT NULL, |
| 17 | + last_name TEXT NOT NULL, |
| 18 | + email TEXT NOT NULL UNIQUE, |
| 19 | + phone_number TEXT, |
| 20 | + hire_date TEXT, |
| 21 | + job_id TEXT, |
| 22 | + salary REAL, |
| 23 | + department TEXT |
| 24 | +) |
| 25 | +''') |
| 26 | + |
| 27 | +# Function to generate fake employee data |
| 28 | +def generate_employee_data(num_records): |
| 29 | + employees = [] |
| 30 | + for _ in range(num_records): |
| 31 | + first_name = fake.first_name() |
| 32 | + last_name = fake.last_name() |
| 33 | + email = fake.email() |
| 34 | + phone_number = fake.phone_number() |
| 35 | + hire_date = fake.date_between(start_date='-10y', end_date='today').isoformat() |
| 36 | + job_id = random.choice(['IT_PROG', 'HR_REP', 'FIN_ANALYST', 'SALES_REP']) |
| 37 | + salary = round(random.uniform(30000, 120000), 2) |
| 38 | + department = random.choice(['IT', 'HR', 'Finance', 'Sales']) |
| 39 | + |
| 40 | + employees.append((first_name, last_name, email, phone_number, hire_date, job_id, salary, department)) |
| 41 | + return employees |
| 42 | + |
| 43 | +# Insert fake data into employees table |
| 44 | +num_records = 1000 |
| 45 | +employee_data = generate_employee_data(num_records) |
| 46 | +cursor.executemany(''' |
| 47 | +INSERT INTO employees (first_name, last_name, email, phone_number, hire_date, job_id, salary, department) |
| 48 | +VALUES (?, ?, ?, ?, ?, ?, ?, ?) |
| 49 | +''', employee_data) |
| 50 | + |
| 51 | +# Commit changes and close connection |
| 52 | +conn.commit() |
| 53 | +conn.close() |
| 54 | + |
| 55 | +print(f"Inserted {num_records} records into the employees table.") |
0 commit comments