All Articles

TIL&TEL 21.09.06~21.09.12

TIL( Today I Learned)

21-09-06 월

  • django

    • from asgiref.sync import asynctosync

      • django는 1 request가 동일 스레드에서 실행된다고 가정한다.
      • thread_sensitive=True (the default)

        • 이 코드에 잠재적 인 호환성 문제를 도입하는 대신 기존의 모든 Django 동기화 코드가 동일한 스레드에서 실행되므로 비동기 모드와 완전히 호환되도록이 모드를 추가하는 것을 선택했습니다. 동기화 코드는 항상 이를 호출하는 비동기 코드 와 다른 스레드에 있으므로 원시 데이터베이스 핸들이나 기타 스레드에 민감한 참조를 전달하지 않아야합니다.
    • Admin 작업들 확인하기

21-09-07 화

  • Django Multi DB schema 그리고 정합성 여부 진행

    • make relation
    • control code create
    • test cases

      • transaction
      • 1toM
      • m2m
      • mto1

21-09-08 수

  • async

    • m async 묶어서 생성이 가능한가?

      • 1 to m
      • m to 1
      • m to m
      • M 작업을 async loop에 던진다!!

        • nested loop okay?
      •   loop = asyncio.get_event_loop()
          loop.create_task(http_call_async())
          return HttpResponse('Non-blocking HTTP request')```
      • 옵션들? 비동기 트라이 트라이

        • 태스크로 만들까?
        • 코루틴으로 만들어서 한번에 코루틴을 실행할까?
        • asyncio.getrunningloop()

          • 현재 OS 스레드에서 실행 중인 이벤트 루프를 반환합니다.
        • asyncio.geteventloop()

          • 현재의 이벤트 루프를 가져옵니다.
        • asyncio.run()

          • 이 함수는 항상 새 이벤트 루프를 만들고 끝에 이벤트 루프를 닫습니다. asyncio 프로그램의 메인 진입 지점으로 사용해야 하고, 이상적으로는 한 번만 호출해야 합니다.
        • 한개의 aw

          • await
        • debuging

          • => Debug 모드 세팅
        • 여러개의 awaitable

          • asyncio.gather() => 결과값 list, 동시에 결과값 받을 수 있다.

            • aws 시퀀스에 있는 어웨이터블 객체동시에 실행합니다.
            • aws에 있는 어웨이터블이 코루틴이면 자동으로 태스크로 예약됩니다.
            • 모든 어웨이터블이 성공적으로 완료되면, 결과는 반환된 값들이 합쳐진 리스트입니다. 결괏값의 순서는 aws에 있는 어웨이터블의 순서와 일치합니다.
            • return_exceptions가 False(기본값)면, 첫 번째 발생한 예외가 gather()를 기다리는 태스크로 즉시 전파됩니다. aws 시퀀스의 다른 어웨이터블은 취소되지 않고 계속 실행됩니다.
          • asyncio.as_completed() iteration, 먼저 처리된 것부터 받을 수 있다.

21-09-09 목

  • ForeignKey 없는 DB 검증하기

    1. primary_key 적용 가능한지?

      • 가능하다!

        • 단 warning이 뜬다.
      • 두개 다 적용은 안된다.
    2. CRUD with

      • C 가능

      • R 제한적

        • M2M Mapping table 직접 사용이 안된다.

          • mapping table id 가 없다. all() 불가능

            • defer 사용해도 강제 적으로 id 가 들어간다.
          • filter 불가능
          • get 불가능
          • all()
          • 다리만 놓는다.
      • U

        • 가능
      • D

        • 가능
    3. Chain Relation 가능??

      • nested chaning 가능하다.
  • 테이블 릴레이션 걸기

    • 관계 끊겨 있는.. brand key ? ForeignKey 이어야 하나?
    • ForeignKey , blank True???

      • use either default=SOMETHING, blank=True, null=False
      • or blank=True, null=True,.

        • CharField.

          • It’s suggested that use the blank=True alone, leaving null=False behind.
    • db_constrait 끄면 어찌 되는지?

      • on_delete 는 장고에서 동작인가, DB에 지정인가?

        • Django 에서 동작
        • + 다른 DB 작업이 ForeignKey 건드려도 삭제 못하게 막기 위한 조항들
        • db_constraint를 끄면 db 상에 ForeignKey constraint 적용을 한다.

          • 그래도 Django 상에서 동작은 한다.

21-09-10 금

  • 데이터 릴레이션 정리
  • 릴레이션 정책

TEL (Trial and Error Log)

21-09-06

  • ERROR: AttributeError: module ‘MySQLdb.constants.FIELD_TYPE’ has no attribute ‘JSON’

    • SITUATION: Poetry Initiating, django
    • REASON: venv 세팅 안먹음?
    • SOLUTION:

      • pip install mysqlclient==2.0.1

21-09-07

  • ERROR: Load key “~~.pem”: bad permissions

    • SITUATION: ssh connect
    • REASON:

      • 권한문제이다
    • SOLUTION:

      • chmod 400 ~~.pem
  • ERROR: You must either define the environment variable DJANGOSETTINGSMODULE or call settings.configure() before accessing settings

    • SITUATION: django 다른 파일 돌리기
    • REASON: 환경 세팅을 안했다.
    • SOLUTION:

      • os.environ.setdefault('DJANGO_SETTINGS_MODULE', 'dj_rel_test.settings')
        import django
        django.setup()```