Как вставить данные в MongoDB, используя Flask без замены существующих данных в записи - PullRequest
0 голосов
/ 02 мая 2020

Когда мы пытаемся обновить данные с помощью оболочки MOngoDB, данные обновляются. Код:

     mycol = mydb["custom"]
        newdict=    {"name": "test", "employment":"govt_employee}
        mycol.insert_one(newdict)
        for i in mycol.find():
            print (i)  ## Data inserted

        mycol.update({"name":"test"},{"$push":{"Residence":[{"State": 
                       [{"District":"abcd","zipcode":"874754"}]}]}})
#State may contain n number of Districts !!!
        **Result : {'n': 1, 'nModified': 1, 'ok': 1.0, 'updatedExisting': True}**

Районы должны обновляться только по названию теста, так как штат может состоять из множества округов ... Но если мы попытаемся сделать то же самое для сбора клиентов, используя код Flask,

        data={"Residence":[{"State":[{"District":"abcd","zipcode":"874754"}]}]}
        customer.update(data, upsert=True)

Требуемый вывод:

Если мы вызываем метод put, районы должны добавляться в список состояний.

Flask - ошибка выдачи :

@app.route("/state/<id>/district",methods=["POST"])
def add_district(id):
    data=request.get_json()
    details= (custom.objects()).to_json()
    details=json.loads(details)
    dict1={}
    districts_name=""
    result=""
    for i in data.items():
        for j in i[1][0].values():
            for k in j:
                #print (k['name'])
                d_name=str(k['name'])
    dist_name=record_name.partition('.')

    if (dist_name[-1] in [details['dist_name'] for i in details]):
        for i in details:
            if (i['dist_name'] == dist_name[-1]):
                data={"Residence":[{"State":[{"District":"abcd","zipcode":"874754"}]}]}
                customer.update(data, upsert=True)  


**127.0.0.1 - - [02/May/2020 14:56:08] "POST /zone_auth/5ea844cfe549f57411075af6/record:a 
HTTP/1.1" 500 - 
Traceback (most recent call last):
  File "C:\python3\lib\site-packages\flask\app.py", line 2463, in __call__
    return self.wsgi_app(environ, start_response)
  File "C:\python3\lib\site-packages\flask\app.py", line 2449, in wsgi_app
    response = self.handle_exception(e)
  File "C:\python3\lib\site-packages\flask\app.py", line 1866, in handle_exception
    reraise(exc_type, exc_value, tb)
  File "C:\python3\lib\site-packages\flask\_compat.py", line 39, in reraise
    raise value
  File "C:\python3\lib\site-packages\flask\app.py", line 2446, in wsgi_app
    response = self.full_dispatch_request()
  File "C:\python3\lib\site-packages\flask\app.py", line 1951, in full_dispatch_request
    rv = self.handle_user_exception(e)
  File "C:\python3\lib\site-packages\flask\app.py", line 1820, in handle_user_exception
    reraise(exc_type, exc_value, tb)
  File "C:\python3\lib\site-packages\flask\_compat.py", line 39, in reraise
    raise value
  File "C:\python3\lib\site-packages\flask\app.py", line 1949, in full_dispatch_request
    rv = self.dispatch_request()
  File "C:\python3\lib\site-packages\flask\app.py", line 1935, in dispatch_request
    return self.view_functions[rule.endpoint](**req.view_args)
  File "C:\python3\DNS\zones\auth_zone\authoritative_zone.py", line 85, in add_a_record
    result = authoritative_zone.update(record_data, upsert=True)
  File "C:\python3\lib\site-packages\mongoengine\document.py", line 605, in update
    if self.pk is None:
AttributeError: 'tuple' object has no attribute 'pk'**
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...