Данные не сохраняются правильно в Postgres - PullRequest
0 голосов
/ 28 февраля 2020

Я пытаюсь сохранить данные из postgres с помощью API. Данные не сохраняются правильно. Пожалуйста, помогите мне понять, почему это происходит. Это xml

      <instance>
    <data id="training_tracker_v4">
      <start/>
      <end/>
      <Welcome_to_the_REC_S_roject_beneficiaries/>
      <group_ip2dp64>
        <Please_enter_the_date_of_the_meeting/>
        <What_type_of_meeting_are_you_h/>
      </group_ip2dp64>
      <For_participants_wit_onal_ID_Card_holders/>
      <group_kh9aw05 jr:template="">
        <Please_scan_the_barc_e_on_the_ID_Card_now/>
      </group_kh9aw05>

Тег group_kh9aw05 рекурсивен, поэтому он имеет несколько значений внутри. Я хотел бы сохранить каждую запись внутри group_kh9aw05 с instanceID и formID (которые находятся вне группы).

Это мой код:

    group = dom2.getElementsByTagName('group_kh9aw05')
        for g in group:
            try:
                if len(g.childNodes) > 0:
                    Farmer_Id = g.getElementsByTagName('Please_scan_the_barc_e_on_the_ID_Card_now')[0].childNodes[0].toxml()
                    if Farmer_Id is not None:
                        real_farmerid = Farmer_Id



                    instanceID = dom2.getElementsByTagName('orx:instanceID')
                    if instanceID[0].firstChild is not None:
                        real_instanceID = instanceID[0].firstChild.nodeValue
                    else:
                        real_instanceID = "None"

                    dataelements = dom2.getElementsByTagName('data')
                    form_ID = dataelements[1].getAttribute("id")
    except:
                        pass

                        try:
                            lv_ODK = Barcodedata()
                            lv_ODK.barcode = real_farmerid
                            lv_ODK.instanceID = real_instanceID
                            lv_ODK.form_ID = form_ID
                            lv_ODK.save()
                        except:
                            pass

В postgres Я получаю только одна запись на instanceID. Я пользуюсь django Пожалуйста, помогите!

SQL код

    CREATE TABLE public.odk_barcodedata
(
    id integer NOT NULL DEFAULT nextval('odk_barcodedata_id_seq'::regclass),
    barcode character varying(254) COLLATE pg_catalog."default",
    "instanceID" character varying(254) COLLATE pg_catalog."default",
    "form_ID" character varying(254) COLLATE pg_catalog."default",
    workshop_date date,
    workshop_country character varying(254) COLLATE pg_catalog."default",
    subject character varying(254) COLLATE pg_catalog."default",
    CONSTRAINT odk_barcodedata_pkey PRIMARY KEY (id),
    CONSTRAINT "odk_barcodedata_instanceID_barcode_28fce750_uniq" UNIQUE ("instanceID", barcode)

)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...