0
PostgreSQL을 처음 사용했습니다. Psycopg2와 PostgreSQL 9.5.6을 함께 사용하고 있습니다. 내 업데이트 SQL은 지금이 모양입니다. Psycopg2를 사용하여 튜플의 파이썬 목록으로 여러 열을 업데이트하려고합니다.Psygopg2 파이썬 튜플 목록으로 복수 열 바꾸기
update_sql = '''
UPDATE my_table
SET size = n, mean = m, std_pop = std
FROM unnest(%s) s(my_id integer, n integer, m double precision, std double precision)
WHERE my_table.id = s.my_id;
'''
예를 들어, 나는 파이썬 튜플 (ID, new_size, new_mean, new_std)의 다음과 같은 파이썬 목록을 가지고 : 나는 테이블에 넣고 3 열을 업데이트 할
new_column_values =[(0,10,9.0,8.0),(1,10,9.0,8.0),(2,10,9.0,8.0)]
동시에 :
+----+------+------+---------+
| id | size | mean | std_pop |
+----+------+------+---------+
| 0 | 0 | 0 | 0 |
| 1 | 0 | 0 | 0 |
| 2 | 0 | 0 | 0 |
+----+------+------+---------+
여러 열을 업데이트하는 것이 가장 좋은 방법일까요? 지금은 오류를 반환합니다 :
psycopg2.ProgrammingError: function return row and query-specified return row do not match
DETAIL: Returned type numeric at ordinal position 3, but query expects double precision.
이중 정밀도를 기대하지만 숫자 유형은 나와 있습니다. 해결 방법을 모르겠습니다. 내 은이고 입니다. std_pop 열은 배정도 열입니다. 무슨 일 이니?
관련 Python 코드를 게시하십시오. –
@ClodoaldoNeto 파이썬 코드는 많은 의존성을 가지고 있지만, 실제로 그것을 해결하는 방법을 찾는다. 나는 'double precision'을 'numeric'으로 바꾼다. 그러나 나는 그 컬럼을 'double precision'이라고 선언했기 때문에 반 직관적이다. – Dobob