Как экранировать символы в ответе JSON для SQL INSERT FROM OPENJSON через PYTHON - PullRequest
0 голосов
/ 01 мая 2019

Получение ошибки при отправке ответа API JSON на базу данных SQL Server из-за апострофа в значениях (').См. Второй ответ JSON для operator_country_lar

Вот пример ответа API:

json_response= '{
"num_results": 455161,
"results": [
    {
        "activity_date": "1975-12-01",
        "activity_id": "50",
        "activity_name": "ORDERED",
        "operator_country_lar": "France",
        "registered_owner_name": "AIR FRANCE"
    },
    {
        "activity_date": "1974-10-01",
        "activity_id": "50",
        "activity_name": "ORDERED",
        "operator_country_lar": "Korea, Democratic People's Republic of",
        "registered_owner_name": "KOREAN AIR LINES"
    }
],
"results_this_page": 2,
"status": 200}'

Сериализация ответа и выполнение:

query = "DECLARE @json nvarchar(max)= "+json_response+" INSERT INTO "+self.database+"([activity_date],[activity_name],[operator_name]) 
SELECT * FROM OPENJSON(@json, '$.results') WITH (activity_date date, activity_name nchar(25), operator_name nchar(256))"


cursor.execute(query)
cnxn.commit()

первый экземпляр работает нормально, но второй набор в ответе выдает ошибку.Как избежать апострофа или есть более точный способ написать оператор SQL OPENJSON в PYTHON?

1 Ответ

0 голосов
/ 10 мая 2019

Этот поиск и замена работали. Возможно, он не идеален, но относительно быстро обрабатывает JSON. Надеюсь, это кому-нибудь поможет.

self.response = json.loads(json.dumps(self.response.json()).replace("'", ""))

Пожалуйста, поделитесь ниже, если вы найдете лучшее решение.

...