Попытка загрузить файл базы данных с помощью запросов 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)