import_step1_attr.py 2.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. import csv
  2. import pymysql
  3. import time
  4. from datetime import datetime
  5. # ====== DB CONFIG ======
  6. DB = {
  7. "host": "127.0.0.1",
  8. "port": 3306,
  9. "user": "root",
  10. "password": "root",
  11. "database": "recycle",
  12. "charset": "utf8mb4"
  13. }
  14. CSV_FILE = "t_chx_release_option.csv"
  15. def gen_id():
  16. """简单生成唯一ID(你后期可换成雪花)"""
  17. return int(time.time() * 1000)
  18. def main():
  19. conn = pymysql.connect(**DB)
  20. cur = conn.cursor()
  21. # ====== 内存映射(保证同名只生成一个ID)======
  22. step_map = {} # step_name -> step_id
  23. option_key_map = {} # (step_name, option_key_name) -> option_key_id
  24. with open(CSV_FILE, encoding="gb18030") as f:
  25. reader = csv.DictReader(f)
  26. for row in reader:
  27. step_id = row["step_id"].strip()
  28. if step_id != "1":
  29. continue
  30. step_name = row["step_name"].strip()
  31. option_key_id = int(row["option_key_id"].strip())
  32. option_key_name = row["option_key_name"].strip()
  33. option_id = int(row["option_id"].strip())
  34. option_name = row["option_name"].strip()
  35. # ---- step ----
  36. if step_name not in step_map:
  37. # step_id = gen_id()
  38. step_map[step_name] = step_id
  39. else:
  40. step_id = step_map[step_name]
  41. # ---- option_key ----
  42. key = (step_name, option_key_name)
  43. if key not in option_key_map:
  44. # option_key_id = gen_id()
  45. option_key_map[key] = option_key_id
  46. else:
  47. option_key_id = option_key_map[key]
  48. # ---- option ----
  49. # option_id = gen_id()
  50. is_default = 0
  51. is_base_price_attr = 0
  52. if option_key_name == "容量":
  53. is_base_price_attr = 1
  54. cur.execute("""
  55. INSERT INTO step1_attr
  56. (
  57. step,attr_key,attr_name,value_id,value_name,
  58. is_default,is_normal,required,is_multi,sort_order,is_base_price_attr,
  59. create_time,
  60. update_time
  61. )
  62. VALUES
  63. (%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s,%s)
  64. """, (
  65. 1,
  66. step_name,
  67. option_key_name,
  68. option_id,
  69. option_name,
  70. is_default,
  71. 1,1,0,0,is_base_price_attr,
  72. datetime.now(),
  73. datetime.now()
  74. ))
  75. conn.commit()
  76. cur.close()
  77. conn.close()
  78. print("✅ release_option 规范化导入完成")
  79. if __name__ == "__main__":
  80. main()