db.py 1.4 KB

1234567891011121314151617181920212223242526272829303132333435363738394041
  1. from datetime import datetime
  2. from typing import Optional
  3. from sqlmodel import SQLModel, create_engine, Session, select, Field
  4. from config.settings import DB_URL
  5. from utils.sql_engine import create_db_and_tables,drop_table,engine
  6. from src.models.asin_model import AsinSeed
  7. class DbManager:
  8. def __init__(self, engine: str=None):
  9. self.engine = engine or create_engine(DB_URL)
  10. create_db_and_tables()
  11. def save_asin_seed(self, asin_model: AsinSeed):
  12. with Session(self.engine) as session:
  13. session.add(asin_model)
  14. session.commit()
  15. session.refresh(asin_model)
  16. return asin_model
  17. def get_asin_seed(self, asin: str)->AsinSeed:
  18. with Session(self.engine) as session:
  19. statement = select(AsinSeed).where(AsinSeed.asin == asin)
  20. results = session.exec(statement)
  21. return results.first()
  22. def add_or_ignore_asin_seed(self, asin_model: AsinSeed):
  23. exist = self.get_asin_seed(asin_model.asin)
  24. if exist:
  25. return exist
  26. else:
  27. return self.save_asin_seed(asin_model)
  28. def main():
  29. asinseed_list = ['B0CQ1SHD8V', 'B0B658JC22', 'B0DQ84H883', 'B0D44RT8R8']
  30. db_manager = DbManager()
  31. for asin in asinseed_list:
  32. db_manager.add_or_ignore_asin_seed(AsinSeed(asin=asin, asin_area='JP'))
  33. if __name__ == "__main__":
  34. main()