python 언어를 사용하여 {1:23, 2:45, 3:17}와 유사한 작은 사전을 Postgres의 SQL 데이터베이스 테이블 열에 삽입합니다
4
표는 다음과 같습니다.
psycopg2 라이브러리는 매우 좋은 JSON 지원을 가지고 있으며 문서에 명확한 예시가 있다.JSON 지원을 무시하려는 경우에도 질의에 자리 표시자를 사용합니다.
질문:
나는 표가 하나 있는데 그중에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 지원을 무시하려는 경우에도 질의에 자리 표시자를 사용합니다.