#!/usr/bin/env python # coding: utf-8 # In[ ]: from sqlalchemy import create_engine, Column, Integer, String, Float, DateTime, ForeignKey from sqlalchemy.orm import sessionmaker, relationship, declarative_base from flask import Flask, render_template # In[ ]: # Create a base class for declarative models Base = declarative_base() class Product(Base): __tablename__ = 'product' id = Column(Integer, primary_key=True) name = Column(String) SKU_PLU_UPC_number = Column(String) price_histories = relationship("PriceHistory", back_populates="product") class Retailer(Base): __tablename__ = 'retailer' id = Column(Integer, primary_key=True) name = Column(String) products = relationship("Product", secondary="retailer_product") class Price(Base): __tablename__ = 'price' id = Column(Integer, primary_key=True) MOQ = Column(Integer) price = Column(Float) class ScraperJob(Base): __tablename__ = 'scraper_job' id = Column(Integer, primary_key=True) start_time = Column(DateTime) end_time = Column(DateTime) parameters = Column(String) statistics = Column(String) class PriceHistory(Base): __tablename__ = 'price_history' id = Column(Integer, primary_key=True) location = Column(String) zip_code = Column(Integer) city_name = Column(String) price_at_time = Column(DateTime) price = Column(Float) scraper_job_id = Column(Integer, ForeignKey('scraper_job.id')) product_id = Column(Integer, ForeignKey('product.id')) product = relationship("Product", back_populates="price_histories") scraper_job = relationship("ScraperJob") class User(Base): __tablename__ = 'user' id = Column(Integer, primary_key=True) username = Column(String) credentials = Column(String) creation_date = Column(DateTime) modification_date = Column(DateTime) class RetailerProduct(Base): __tablename__ = 'retailer_product' retailer_id = Column(Integer, ForeignKey('retailer.id'), primary_key=True) product_id = Column(Integer, ForeignKey('product.id'), primary_key=True) # In[ ]: # Create the database engine engine = create_engine('sqlite:///user_database.db') Base.metadata.create_all(engine) # In[ ]: # Create a session factory Session = sessionmaker(bind=engine) session = Session() # In[ ]: import sys # Create a command-line tool that parses sys.argv to allow a user to create/edit/delete user objects. if len(sys.argv) < 2: app = Flask(__name__) # Create a database connection engine = create_engine('sqlite:///user_database.db') Session = sessionmaker(bind=engine) session = Session() @app.route('/') def home(): # Get all user objects users = session.query(User).all() return render_template('index.html', users=users) app.run() command = sys.argv[1] if command == "create": if len(sys.argv) < 4: print("Usage: python script.py create [username] [credentials]") sys.exit(1) username = sys.argv[2] credentials = sys.argv[3] # Create a new user object new_user = User(username=username, credentials=credentials) session.add(new_user) session.commit() print("User created successfully!") elif command == "edit": if len(sys.argv) < 4: print("Usage: python script.py edit [username] [new_credentials]") sys.exit(1) username = sys.argv[2] new_credentials = sys.argv[3] # Find the user object user = session.query(User).filter_by(username=username).first() if user: # Update user credentials user.credentials = new_credentials session.commit() print("User edited successfully!") else: print("User not found!") elif command == "delete": if len(sys.argv) < 3: print("Usage: python script.py delete [username]") sys.exit(1) username = sys.argv[2] # Find the user object user = session.query(User).filter_by(username=username).first() if user: # Delete the user object session.delete(user) session.commit() print("User deleted successfully!") else: print("User not found!") else: print("Usage: python script.py [create|edit|delete] [username] [credentials]")