1
0

add_columns.py 1.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142
  1. import os
  2. import paramiko
  3. import dotenv
  4. repo_root = os.path.dirname(os.path.dirname(os.path.abspath(__file__)))
  5. dotenv.load_dotenv(dotenv_path=os.path.join(repo_root, ".env"))
  6. host = os.environ.get('SERVER_HOST')
  7. user = os.environ.get('SERVER_USER')
  8. password = os.environ.get('SERVER_PASS')
  9. if password == "your_db_password_here" or not password:
  10. password = None
  11. ssh = paramiko.SSHClient()
  12. ssh.set_missing_host_key_policy(paramiko.AutoAddPolicy())
  13. try:
  14. ssh.connect(host, username=user, password=password, timeout=10)
  15. print("SSH Connected!")
  16. queries = [
  17. "ALTER TABLE food_db.products_core ADD COLUMN url LONGTEXT NULL;",
  18. "ALTER TABLE food_db.products_core ADD COLUMN image_url LONGTEXT NULL;",
  19. "ALTER TABLE food_db.products_core ADD COLUMN image_small_url LONGTEXT NULL;",
  20. "ALTER TABLE food_db.products_core ADD COLUMN image_ingredients_url LONGTEXT NULL;",
  21. "ALTER TABLE food_db.products_core ADD COLUMN image_ingredients_small_url LONGTEXT NULL;",
  22. "ALTER TABLE food_db.products_core ADD COLUMN image_nutrition_url LONGTEXT NULL;",
  23. "ALTER TABLE food_db.products_core ADD COLUMN image_nutrition_small_url LONGTEXT NULL;"
  24. ]
  25. db_pass = os.environ.get('DB_LOADER_PASS') or 'your_db_loader_pass'
  26. for q in queries:
  27. print(f"Running: {q}")
  28. cmd = f"docker exec food_project-mysql-1 mysql -u food_loader -p{db_pass} food_db -e \"{q}\""
  29. stdin, stdout, stderr = ssh.exec_command(cmd)
  30. print("STDOUT:\n", stdout.read().decode('utf-8'))
  31. print("STDERR:\n", stderr.read().decode('utf-8'))
  32. except Exception as e:
  33. print(f"Error: {e}")
  34. finally:
  35. ssh.close()