Попытка загрузить файл базы данных с помощью запросов python и отправки в API django

Здравствуйте, у меня есть файл базы данных. Я хочу отправить этот файл базы данных через метод post в python requests на мой сервер django и хранить этот файл базы данных где-то на моем сервере.

У меня есть следующий код для отправки файла базы данных:

database = {'uploaded_file': open('<my_local_path>/Old_DB.sqlite3', 'rb')}
response = requests.post('http:192.168.20.4/api/app/receive-database', data=database)
print(response.status_code)

На моем API:

class DatabaseReceive(views.APIView):
    permission_classes = (permissions.AllowAny,)

    def post(self, request):
        database = request.data
        data = database.get('uploaded_file')
        try:
            newDB = open('<path_to_store_the_database>/New_DB.sqlite3', 'wb')
            newDB.write(data)
            result = "Sucess"
        except Exception as e:
            result = e
        return Response(status=status.HTTP_200_OK, data=result)

Итак, в основном я отправляю базу данных в виде двоичного файла на мой api. На моем api я создаю другой двоичный файл и пытаюсь записать двоичное содержимое из базы данных в этот новый двоичный файл, делая его новой базой данных. Здесь я вижу, что 'data' является двоичным содержимым, но я не могу записать эти 'data' в мой новый двоичный файл DB.

Update

Я разобрался в проблеме. Мне пришлось внести следующие изменения, чтобы заставить его работать:

Для отправки файла базы данных необходимо использовать атрибут files

response = requests.post('http:192.168.20.4/api/app/receive-database', files=database)

О API,

def post(self, request):
    database = request.data
    data = database.get('uploaded_file')
    try:
        newDB = open('<path_to_store_the_database>/New_DB.sqlite3', 'wb')
        newDB.write(data.read())
        newDB.close()
        result = "Sucess"
    except Exception as e:
        result = str(e)
    return Response(status=status.HTTP_200_OK, data=result)
Вернуться на верх