Introduction
In today's digital world, data privacy and security compliance are crucial for businesses. Many companies use compliance management software to ensure they meet regulatory requirements like GDPR, CCPA, and HIPAA. However, recent allegations have raised concerns about how these systems are implemented and verified. This tutorial will teach you how to create a basic compliance tracking system using Python and SQLite, which you can use to monitor your own data handling practices and avoid the pitfalls that companies like Delve allegedly faced.
Prerequisites
Before starting this tutorial, you'll need:
- A computer with Python 3 installed
- Basic understanding of Python programming concepts
- Some familiarity with databases (no prior experience required)
Step-by-Step Instructions
1. Set Up Your Python Environment
First, we need to create a new Python project directory and set up our environment. Open your terminal or command prompt and run these commands:
mkdir compliance_tracker
cd compliance_tracker
python3 -m venv compliance_env
source compliance_env/bin/activate # On Windows: compliance_env\Scripts\activate
This creates a new project folder and sets up a virtual environment to keep our project dependencies isolated.
2. Install Required Libraries
While we'll use basic Python libraries for this tutorial, we'll also install a helpful package for database management:
pip install sqlite3
SQLite is a lightweight database that's perfect for learning and small projects. It's included with Python, so we don't need to install anything extra.
3. Create the Database Structure
Let's create our main Python file and set up the database:
import sqlite3
db_connection = sqlite3.connect('compliance.db')
cursor = db_connection.cursor()
# Create tables for compliance records
create_compliance_table = '''
CREATE TABLE IF NOT EXISTS compliance_records (
id INTEGER PRIMARY KEY AUTOINCREMENT,
company_name TEXT NOT NULL,
regulation TEXT NOT NULL,
status TEXT NOT NULL,
last_updated DATE NOT NULL,
notes TEXT
);
'''
cursor.execute(create_compliance_table)
db_connection.commit()
print("Database and table created successfully!")
db_connection.close()
This creates a database file called 'compliance.db' with a table to track compliance records. The table includes fields for company name, regulation type, status, update date, and notes.
4. Create Functions to Add Compliance Records
Now let's add functions to manage our compliance data:
import sqlite3
from datetime import datetime
def add_compliance_record(company_name, regulation, status, notes=""):
db_connection = sqlite3.connect('compliance.db')
cursor = db_connection.cursor()
# Get current date
current_date = datetime.now().strftime("%Y-%m-%d")
# Insert record
cursor.execute('''
INSERT INTO compliance_records (company_name, regulation, status, last_updated, notes)
VALUES (?, ?, ?, ?, ?)
''', (company_name, regulation, status, current_date, notes))
db_connection.commit()
db_connection.close()
print(f"Compliance record added for {company_name}")
# Test the function
add_compliance_record("Acme Corp", "GDPR", "Compliant", "All data encryption protocols in place")
This function allows you to add new compliance records with proper validation and date tracking. Notice how we're using parameterized queries to prevent database injection attacks.
5. Create a Function to View Compliance Records
def view_compliance_records(company_name=None):
db_connection = sqlite3.connect('compliance.db')
cursor = db_connection.cursor()
if company_name:
cursor.execute("SELECT * FROM compliance_records WHERE company_name = ?", (company_name,))
else:
cursor.execute("SELECT * FROM compliance_records")
records = cursor.fetchall()
if not records:
print("No records found.")
return
print("\nCompliance Records:")
print("ID | Company | Regulation | Status | Last Updated | Notes")
print("-" * 80)
for record in records:
print(f"{record[0]} | {record[1]} | {record[2]} | {record[3]} | {record[4]} | {record[5]}")
db_connection.close()
This function allows you to view all records or filter by company name. It's important to display data clearly so you can verify compliance status easily.
6. Add a Function to Update Compliance Status
def update_compliance_status(record_id, new_status, notes=""):
db_connection = sqlite3.connect('compliance.db')
cursor = db_connection.cursor()
current_date = datetime.now().strftime("%Y-%m-%d")
cursor.execute('''
UPDATE compliance_records
SET status = ?, last_updated = ?, notes = ?
WHERE id = ?
''', (new_status, current_date, notes, record_id))
db_connection.commit()
if cursor.rowcount > 0:
print(f"Compliance record {record_id} updated successfully")
else:
print("Record not found")
db_connection.close()
This function allows you to update compliance status when changes occur. It's crucial to maintain accurate records, as the Delve case shows how inaccurate records can mislead stakeholders.
7. Create a Main Menu Interface
def main_menu():
while True:
print("\n=== Compliance Tracker ===")
print("1. Add new compliance record")
print("2. View all records")
print("3. View records for specific company")
print("4. Update compliance status")
print("5. Exit")
choice = input("Enter your choice (1-5): ")
if choice == '1':
company = input("Company name: ")
regulation = input("Regulation: ")
status = input("Status: ")
notes = input("Notes (optional): ")
add_compliance_record(company, regulation, status, notes)
elif choice == '2':
view_compliance_records()
elif choice == '3':
company = input("Enter company name: ")
view_compliance_records(company)
elif choice == '4':
record_id = int(input("Enter record ID to update: "))
new_status = input("Enter new status: ")
notes = input("Enter new notes (optional): ")
update_compliance_status(record_id, new_status, notes)
elif choice == '5':
print("Goodbye!")
break
else:
print("Invalid choice. Please try again.")
# Run the main menu
if __name__ == "__main__":
main_menu()
This creates a user-friendly interface that makes it easy to manage your compliance records without needing to write code each time.
Summary
In this tutorial, you've learned how to create a basic compliance tracking system using Python and SQLite. This system helps you maintain accurate records of your data handling practices, which is essential for avoiding the kind of misleading compliance issues that affected companies like Delve. The key principles you've learned include:
- Proper database design with appropriate fields for tracking compliance
- Using parameterized queries to prevent database injection attacks
- Implementing functions to add, view, and update records
- Creating a user-friendly interface for easy management
Remember, the integrity of your compliance records is crucial. Unlike the alleged practices of companies like Delve, your system should always maintain accurate, honest records that reflect real compliance status. This approach ensures transparency and helps build trust with customers and regulators.



