Added version 4
This commit is contained in:
120
jokes_bot/v4.0/populate_db.py
Normal file
120
jokes_bot/v4.0/populate_db.py
Normal file
@@ -0,0 +1,120 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Script to populate the jokes database with sample data.
|
||||
"""
|
||||
|
||||
import sqlite3
|
||||
import os
|
||||
|
||||
def populate_database():
|
||||
# Connect to the database
|
||||
db_path = 'jokes.db'
|
||||
if not os.path.exists(db_path):
|
||||
print(f"❌ Database {db_path} does not exist!")
|
||||
print("Please run database.py first to create the database.")
|
||||
return False
|
||||
|
||||
conn = sqlite3.connect(db_path)
|
||||
cursor = conn.cursor()
|
||||
|
||||
# Check if jokes table is empty before adding data
|
||||
try:
|
||||
cursor.execute('SELECT COUNT(*) FROM jokes')
|
||||
count = cursor.fetchone()[0]
|
||||
except sqlite3.OperationalError:
|
||||
print("❌ The jokes table does not exist. Please run database.py first.")
|
||||
conn.close()
|
||||
return False
|
||||
|
||||
if count > 0:
|
||||
overwrite = input(f"⚠️ Database already contains {count} jokes. Overwrite? (y/N): ")
|
||||
if overwrite.lower() != 'y':
|
||||
print("❌ Operation cancelled.")
|
||||
conn.close()
|
||||
return False
|
||||
|
||||
# Clear existing data first
|
||||
# Only try to delete from user_sentiments if the table exists
|
||||
try:
|
||||
cursor.execute('DELETE FROM user_sentiments')
|
||||
except sqlite3.OperationalError:
|
||||
# user_sentiments table doesn't exist, which is OK
|
||||
print("ℹ️ user_sentiments table does not exist yet.")
|
||||
pass
|
||||
cursor.execute('DELETE FROM jokes')
|
||||
|
||||
# Use the clean SQL file without SELECT statements
|
||||
sql_file = 'clean_sample_data.sql'
|
||||
if not os.path.exists(sql_file):
|
||||
print(f"❌ SQL file {sql_file} does not exist!")
|
||||
return False
|
||||
|
||||
try:
|
||||
# Execute the clean SQL file directly
|
||||
with open(sql_file, 'r', encoding='utf-8') as f:
|
||||
sql_commands = f.read()
|
||||
|
||||
cursor.executescript(sql_commands)
|
||||
|
||||
conn.commit()
|
||||
print(f"✅ Successfully populated the jokes table with sample jokes!")
|
||||
|
||||
# Count the total number of jokes
|
||||
cursor.execute('SELECT COUNT(*) FROM jokes')
|
||||
count = cursor.fetchone()[0]
|
||||
print(f"📊 Total jokes in database: {count}")
|
||||
|
||||
# Add some sample user sentiments for the first few jokes
|
||||
print("🎯 Adding sample user sentiments...")
|
||||
jokes_with_sentiment = [(1, 'up'), (1, 'up'), (1, 'neutral'),
|
||||
(2, 'down'), (2, 'up'),
|
||||
(3, 'up'), (3, 'up'), (3, 'up')]
|
||||
|
||||
for joke_id, sentiment in jokes_with_sentiment:
|
||||
try:
|
||||
cursor.execute('''
|
||||
INSERT INTO user_sentiments (joke_id, user_sentiment)
|
||||
VALUES (?, ?)
|
||||
''', (joke_id, sentiment))
|
||||
except sqlite3.OperationalError:
|
||||
# If user_sentiments table doesn't exist, skip adding sentiments
|
||||
print("ℹ️ Skipping user sentiments as the table doesn't exist yet.")
|
||||
break
|
||||
|
||||
conn.commit()
|
||||
print(f"✅ Added sample user sentiments for {len(jokes_with_sentiment)} joke entries")
|
||||
|
||||
# Show sentiment distribution
|
||||
cursor.execute('SELECT sentiment_label, COUNT(*) FROM jokes GROUP BY sentiment_label')
|
||||
distribution = cursor.fetchall()
|
||||
print(f'\n📈 AI Sentiment distribution:')
|
||||
for label, cnt in distribution:
|
||||
print(f' {label}: {cnt} jokes')
|
||||
|
||||
# Show user sentiment distribution if the table exists
|
||||
try:
|
||||
cursor.execute('SELECT user_sentiment, COUNT(*) FROM user_sentiments GROUP BY user_sentiment')
|
||||
user_distribution = cursor.fetchall()
|
||||
if user_distribution:
|
||||
print(f'\n👥 User Sentiment distribution:')
|
||||
for sentiment, cnt in user_distribution:
|
||||
emoji = {'up': '👍', 'down': '👎', 'neutral': '😐'}[sentiment]
|
||||
print(f' {emoji} {sentiment.capitalize()}: {cnt} ratings')
|
||||
except sqlite3.OperationalError:
|
||||
print("\nℹ️ User sentiment table not available yet.")
|
||||
|
||||
conn.close()
|
||||
return True
|
||||
except Exception as e:
|
||||
print(f"❌ Error executing SQL commands: {e}")
|
||||
conn.rollback()
|
||||
conn.close()
|
||||
return False
|
||||
|
||||
if __name__ == '__main__':
|
||||
print("🔄 Populating jokes database with sample data...")
|
||||
success = populate_database()
|
||||
if success:
|
||||
print("\n🎉 Database successfully populated! You can now run jokes.py to enjoy the jokes.")
|
||||
else:
|
||||
print("\n💥 Failed to populate the database.")
|
||||
Reference in New Issue
Block a user