python 언어를 사용하여 {1:23, 2:45, 3:17}와 유사한 작은 사전을 Postgres의 SQL 데이터베이스 테이블 열에 삽입합니다

4

질문:

나는 표가 하나 있는데 그중에varchar 형식 열과 두 개의 json 형식 열이 있다. 나는 다음과 같은 방법으로 이 표를 만들었다.
create table global_records(
     cattle_id varchar(255) not null primary key, 
     step_count json, 
     speed json
);
지금python을 사용하여 다음 값을 삽입하고 싶습니다.
INSERT INTO 
       global_records(cattle_id, step_count, speed) 
VALUES ('cattle_A', '{1: 22, 4: 12}', '{2: 24, 6: 98}');
이를 위해 python을 사용하여 다음과 같은 문자열을 작성했습니다.
cattle_id = 'cattle_A'
step_count_dict = {1: 22, 4: 12}
speed_dict = {2: 24, 6: 98}

query = "INSERT INTO global_records(cattle_id, step_count, speed) VALUES ('"+cattle_id+"', '" + str(step_count_dict) + "', '" + str(speed_dict) + "'); "
하지만 소용없다.다음 오류가 발생했습니다.
invalid input syntax for type json
    LINE 1: ... step_count) values ('cattle_A', '{1: 22}',...
                                                             ^
DETAIL:  Expected string or "}", but found "1".
CONTEXT:  JSON data, line 1: {1...
나는 비슷한 답안을 찾았지만 찾지 못했다.이거 쉬울 거야.
표는 다음과 같습니다.
cattle_id |   step_count   |    speed
----------+----------------+----------------
cattle_A  | {1: 22, 4: 12} | {2: 24, 6: 98}
cattle_B  | {4: 92, 6: 90} | {88: 4, 12: 23}

답안

문자열을 한데 봉합해서 조회를 조합하지 마십시오.이것은 거의 틀림없이 안전상의 빈틈을 초래할 것이다.
psycopg2 라이브러리는 매우 좋은 JSON 지원을 가지고 있으며 문서에 명확한 예시가 있다.JSON 지원을 무시하려는 경우에도 질의에 자리 표시자를 사용합니다.