Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import csv
- import sqlite3
- from sys import argv
- class UsersReader:
- def __init__(self, filename: str):
- self.filename = filename
- def get_users(self):
- users = []
- with open(self.filename, newline="", encoding="utf8") as input_file:
- reader = csv.DictReader(input_file)
- for row in reader:
- users.append(row)
- return users
- class DatabaseHandler:
- def __init__(self, dbname: str):
- self.dbname = dbname
- def connect(self):
- return sqlite3.connect(self.dbname)
- def init_db(self):
- with self.connect() as connection:
- cursor = connection.cursor()
- cursor.execute("""
- CREATE TABLE IF NOT EXISTS users (
- id INTEGER PRIMARY KEY AUTOINCREMENT,
- username TEXT NOT NULL UNIQUE,
- email TEXT NOT NULL UNIQUE
- )
- """)
- connection.commit()
- def add_user(self, username: str, email: str):
- with self.connect() as connection:
- cursor = connection.cursor()
- cursor.execute(
- "INSERT INTO users(username, email) VALUES(?, ?)",
- (username, email)
- )
- connection.commit()
- def get_users(self):
- with self.connect() as connection:
- cursor = connection.cursor()
- cursor.execute("SELECT id, username, email FROM users")
- return cursor.fetchall()
- reader = UsersReader("users.csv")
- database = DatabaseHandler("users.db")
- if len(argv) > 1 and argv[1] == "setup":
- database.init_db()
- print("Importuje dane...")
- for user in reader.get_users():
- try:
- database.add_user(user["username"], user["email"])
- except sqlite3.IntegrityError:
- print(f"Użytkownik (username: {user['username']}, email: {user['email']}) już istnieje.")
- print("---" * 10)
- print("Pobieram dane z bazy danych...")
- for user_id, username, email in database.get_users():
- print(f"Użytkownik(id: {user_id}, username: {username}, email: {email})")
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement