Django ORM – on_delete 옵션

on_delete 는 Foreign Key로 지정된 row, 항목이 삭제될때의 조건을 붙여두는 것이다.

좋은 설명글이 있어 옮겨 둔다.

아래는 on_delete 옵션의 개념을 다른 사이트에서 쉽게 풀어놓아 붙여보았다.

CASCADE : “안녕 세상에, 나는 article_B 없이는 살 수 없다”고 자살한다.
PROTECT : “아니오! 제발! 하지마! 난 너 없이는 살 수 없어!”
SET_NULL : “좋아, 내가 너의 사람이 아니라면 난 아무도 아니야”
SET_DEFAULT, SET() : “괜찮아, 여분의 애인이있어, 지금부터 article_C를 참조 할 것이다”
DO_NOTHING : “나는 현실에 직면 할 수 없다, 그것이 나에게 남아있는 유일한 것이더라도 당신의 이름을 계속 부르겠다!”

https://velog.io/@byoungju1012/TIL29.-ondelete-%EC%98%B5%EC%85%98

psycopg2 TextField 값 파일 저장 예제

Python psycopg2를 사용해서 TextField 값을 파일로 저장하는 방법을 알아보겠습니다. TextField는 PostgreSQL에서 긴 텍스트를 저장하는 데 사용하는 데이터 형식입니다. 예를 들어, 블로그 게시물의 내용이나 제품 설명을 저장할 수 있습니다.

Python 코드:

Python

import psycopg2

# PostgreSQL 연결 설정
conn = psycopg2.connect(
    host="localhost",
    port=5432,
    database="mydb",
    user="myuser",
    password="mypassword",
)

# 테이블에서 데이터 가져오기
cur = conn.cursor()
cur.execute("SELECT text FROM mytable")

# TextField 값 뽑기
for row in cur:
    text = row[0]

    # 파일에 저장
    with open("output.txt", "w") as f:
        f.write(text)

# 연결 종료
conn.close()

코드를 사용할 때는 주의하시기 바랍니다. 자세히 알아보기content_copy

설명:

이 예제에서는 다음과 같은 작업을 수행합니다.

  1. PostgreSQL 연결을 설정합니다.
  2. 테이블에서 데이터를 가져옵니다.
  3. TextField 값을 뽑습니다.
  4. 값을 파일에 저장합니다.
  5. 연결을 종료합니다.

TextField 값 뽑는 방법:

TextField 값을 뽑으려면 다음 코드를 사용합니다.

Python

text = row[0]

코드를 사용할 때는 주의하시기 바랍니다. 자세히 알아보기content_copy

이 코드는 mytable 테이블의 text 열에서 값을 가져옵니다.

파일에 값 저장하는 방법:

파일에 값을 저장하려면 다음 코드를 사용합니다.

Python

with open("output.txt", "w") as f:
    f.write(text)

코드를 사용할 때는 주의하시기 바랍니다. 자세히 알아보기content_copy

이 코드는 output.txt 파일에 text 값을 씁니다.

예시:

다음은 mytable 테이블의 내용입니다.

text |
---- |
This is a blog post. |
This is a product description. |
... |

이 예시에서 mytable 테이블에는 두 개의 행이 있습니다. 첫 번째 행에는 블로그 게시물의 내용이 있고, 두 번째 행에는 제품 설명이 있습니다.

확장:

이 예제를 확장하여 다음과 같은 작업을 수행할 수 있습니다.

  • TextField 값을 필터링하거나 정렬할 수 있습니다.
  • TextField 값을 JSON 또는 CSV 형식으로 저장할 수 있습니다.
  • TextField 값을 여러 파일에 저장할 수 있습니다.

PostgreSQL JSONField 값 입력 방법

그냥 텍스트가 아니라 Query Editor 에서 넣으려고 하는데 “” 이렇게 주니깐 에러 발생

::jsonb 라는 키워드를 붙여줘야 한다.

UPDATE django.app_test_data_manager_testlog SET option_field = '{}'::jsonb;

이 예제의 option_field 의 선언은 다음과 같이 되어 있다.

![](assets/images/2023/10/image.png?resize=418%2C50&ssl=1)