Advertisement
ksieradzinski

Untitled

Jun 6th, 2025
19
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.09 KB | None | 0 0
  1. import csv
  2. import sqlite3
  3. from sys import argv
  4.  
  5. class UsersReader:
  6. def __init__(self, filename: str):
  7. self.filename = filename
  8.  
  9. def get_users(self):
  10. users = []
  11. with open(self.filename, newline="", encoding="utf8") as input_file:
  12. reader = csv.DictReader(input_file)
  13. for row in reader:
  14. users.append(row)
  15.  
  16. return users
  17.  
  18.  
  19. class DatabaseHandler:
  20. def __init__(self, dbname: str):
  21. self.dbname = dbname
  22.  
  23. def connect(self):
  24. return sqlite3.connect(self.dbname)
  25.  
  26. def init_db(self):
  27. with self.connect() as connection:
  28. cursor = connection.cursor()
  29. cursor.execute("""
  30. CREATE TABLE IF NOT EXISTS users (
  31. id INTEGER PRIMARY KEY AUTOINCREMENT,
  32. username TEXT NOT NULL UNIQUE,
  33. email TEXT NOT NULL UNIQUE
  34. )
  35. """)
  36. connection.commit()
  37.  
  38. def add_user(self, username: str, email: str):
  39. with self.connect() as connection:
  40. cursor = connection.cursor()
  41. cursor.execute(
  42. "INSERT INTO users(username, email) VALUES(?, ?)",
  43. (username, email)
  44. )
  45. connection.commit()
  46.  
  47. def get_users(self):
  48. with self.connect() as connection:
  49. cursor = connection.cursor()
  50. cursor.execute("SELECT id, username, email FROM users")
  51. return cursor.fetchall()
  52.  
  53.  
  54. reader = UsersReader("users.csv")
  55. database = DatabaseHandler("users.db")
  56.  
  57. if len(argv) > 1 and argv[1] == "setup":
  58. database.init_db()
  59.  
  60. print("Importuje dane...")
  61. for user in reader.get_users():
  62. try:
  63. database.add_user(user["username"], user["email"])
  64. except sqlite3.IntegrityError:
  65. print(f"Użytkownik (username: {user['username']}, email: {user['email']}) już istnieje.")
  66.  
  67. print("---" * 10)
  68.  
  69. print("Pobieram dane z bazy danych...")
  70. for user_id, username, email in database.get_users():
  71. print(f"Użytkownik(id: {user_id}, username: {username}, email: {email})")
  72.  
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement