alter_db_strict_materials.py 1.2 KB

123456789101112131415161718192021222324252627282930313233343536
  1. import mysql.connector
  2. from db import DB_CONFIG
  3. def alter_database():
  4. try:
  5. conn = mysql.connector.connect(**DB_CONFIG)
  6. cursor = conn.cursor()
  7. alter_queries = [
  8. # Add available_colors to materials
  9. "ALTER TABLE materials ADD COLUMN available_colors JSON DEFAULT NULL AFTER price_per_cm3",
  10. # Add material_id to orders to link strictly to reference
  11. "ALTER TABLE orders ADD COLUMN material_id INT DEFAULT NULL AFTER user_id",
  12. "ALTER TABLE orders ADD CONSTRAINT fk_order_material FOREIGN KEY (material_id) REFERENCES materials(id) ON DELETE SET NULL"
  13. ]
  14. for query in alter_queries:
  15. try:
  16. cursor.execute(query)
  17. print(f"Executed: {query}")
  18. except mysql.connector.Error as e:
  19. print(f"Command error: {e}")
  20. conn.commit()
  21. print("Database migration completed successfully")
  22. except mysql.connector.Error as err:
  23. print(f"Error connecting to MySQL: {err}")
  24. finally:
  25. if 'conn' in locals() and conn.is_connected():
  26. cursor.close()
  27. conn.close()
  28. if __name__ == "__main__":
  29. alter_database()