2011-10-05 39 views
12

Tôi đang cố gắng tải khoảng 30k xml tệp từ clinicaltrials.gov vào cơ sở dữ liệu mySQL và cách tôi xử lý nhiều vị trí, từ khóa, v.v. trong một mô hình riêng biệt sử dụng ManyToManyFields.Làm thế nào để Django Fixtures xử lý ManyToManyFields?

Cách tốt nhất tôi đã tìm ra là đọc dữ liệu bằng cách sử dụng vật cố định. Vì vậy, câu hỏi của tôi là, làm thế nào để xử lý các lĩnh vực mà dữ liệu là một con trỏ đến một mô hình khác?

Tôi tiếc là không biết đủ về cách ManyToMany/ForeignKeys làm việc, để có thể trả lời ...

Thanks for the help, mẫu mã bên dưới: _ _ đại diện cho các lĩnh vực ManyToMany

{ 
    "pk": trial_id, 
    "model": trials.trial, 
    "fields": { 
      "trial_id": trial_id, 
      "brief_title": brief_title, 
      "official_title": official_title, 
      "brief_summary": brief_summary, 
      "detailed_Description": detailed_description, 
      "overall_status": overall_status, 
      "phase": phase, 
      "enrollment": enrollment, 
      "study_type": study_type, 
      "condition": _______________, 
      "elligibility": elligibility, 
      "Criteria": ______________, 
      "overall_contact": _______________, 
      "location": ___________, 
      "lastchanged_date": lastchanged_date, 
      "firstreceived_date": firstreceived_date, 
      "keyword": __________, 
      "condition_mesh": condition_mesh, 
    } 

}

+0

Tôi không nhớ câu trả lời, nhưng nếu bạn chạy máy chủ phát triển của mình, hãy tạo dữ liệu mẫu sử dụng quản trị viên, và sau đó đổ cơ sở dữ liệu vào tệp json bằng lệnh "manage.py dumpdata", bạn sẽ có thể tạo các đồ đạc của mình bằng cách sử dụng tệp làm ví dụ. đó là những gì tôi đã làm khi tôi cần tìm hiểu cách tạo đồ đạc cho các trường mối quan hệ. :) – akonsu

Trả lời

16

một nước ngoài chính là đơn giản pk của đối tượng bạn đang liên kết đến, một manytomanyfield sử dụng một danh sách của pk. do đó

[ 
    { 
     "pk":1, 
     "model":farm.fruit, 
     "fields":{ 
      "name" : "Apple", 
      "color" : "Green", 
     } 
    }, 
    { 
     "pk":2, 
     "model":farm.fruit, 
     "fields":{ 
      "name" : "Orange", 
      "color" : "Orange", 
     } 
    }, 
    { 
     "pk":3, 
     "model":person.farmer, 
     "fields":{ 
      "name":"Bill", 
      "favorite":1, 
      "likes":[1,2], 
     } 
    } 
] 

Bạn cần viết kịch bản chuyển đổi để hoàn thành công việc này. Đồ đạc có thể rất mỏng manh; rất khó để làm việc để thử nghiệm với một tập hợp con trước khi bạn dành nhiều thời gian chuyển đổi bản ghi 30k (chỉ để tìm thấy chúng có thể không nhập)

+0

Cảm ơn. Với sự tinh tế của đồ đạc, bạn có đề xuất một cách khác để nhập dữ liệu XML vào DB không? – CMaury

+0

Sử dụng tập lệnh Python đọc XML và tạo đối tượng Thử nghiệm, sau đó chỉ cần dùng trial.save(). – blaze

Các vấn đề liên quan