StoryCode

'전체 글'에 해당되는 글 570건

  1. DJango.ORM
  2. IOT (Indexed Organized Table)
  3. NESTED TABLE Column

DJango.ORM

Python, 파이썬
반응형

참조) https://www.slideshare.net/EunhyangKim2/ss-118560530

# 앞 부분만 정리.

포스트 다 가져오기 Post.objects.all()
포스트 1개 가져오기 Post.objects.get(id=1)
내가 쓴 포스트 가져오기 Post.objects.filter(username="hyang")

 

머신 러닝 모델의 여러 버전마다 실행된 것들에서 8월 1일에서 8월20일까지 실행된 것 들 중 error 없이 실행된 active 한 것들만 모아서, 응답시간의 평균값, 최대값, 그리고 모델에 설정한 스레숄드 값보다 빠르게 응답한 개수 가져오기
#머신 러닝 모델의 여러 버전마다 실행된 것들에서 8월 1일에서 8월20일까지 실행된 것 들 중 error 없이 실행된 active 한 것들만 모아서
run_qs = Run.objects.filter(
    version__id__in=version_ids,
    ml_model__id__in=version_ids,
    is_active=True
    requested_at__range=(start_date, end_date)
)
# 응답시간의 평균값, 최대값
run_qs.aggregate(Avg('response_time'), Max('response_time'))
# 그리고 모델에 설정한 스레숄드 값보다 빠르게 응답한 개수 가져오기
run.response_time > ml_model.threshold인 run 의 총개수 ?
특정기준으로 값을 묶어 새로운 컬럼 만들때는 annotation!

run_qs.annotate(
    fast_runs=Count(
        Case(
               When(response_time__gt=F('ml_model_threshold'), then=1), output_field=IntegerField(),
        )
    )
).aggregate(Sum('fast_runs'))

 

ForeignKey select_related
ManyToManyField preFetch_related
# select_related : 데이타는 한꺼번에 가져와야 한다.
class Post(models.Model):
    author = models.ForeignKey(Author)
    tag = models.ManyToManyField(Tag)

1) 아래 경우는 각 문장이 각각 한번씩 query 해서 두번 가져온다.
post = Post.objects.get(id=1)
author = post.author

2) 위를 한번에 가져오려면 아래와 같이 변경한다.
post = Post.objects.select_related('author').get(id=1)
author = post.author
# prefetch_related : 
1) 아래 경우는 post 하나 돌때마다 가져온다.
posts = Post.objects.all()
for post in posts:
    for tag in post.tag_set.all():
        print(tag)

2) posts = Post.objects.all().prefetch_related('tag_set')
for post in posts:
    for tag in post.tag_set.all():
        print(tag)
# 불필요한 컬럼은 다 가져오지 않는다.
posts = Post.objects.values('name')
for post in posts:
    print(post.name)
# 필요한 것만 가져오기
1) 아래 경우는 If posts: 문장이 모든 데이타를 다 가져온다.
posts = Post.objects.all()
If posts: #
   print(posts)

2) 이를 아래와 바꾸는 것이 좋다.
If posts.exists()

 

참고 ) Django-debug-toolbar 에서 ORM 이 실제 쿼리를 어떻게 날렸는지 확인가능하다.

 

반응형

'Python, 파이썬' 카테고리의 다른 글

디렉토리검색  (0) 2020.02.13
DJango 의 장점  (0) 2020.02.12
Django Rest FrameWork  (0) 2020.02.07
기본문법  (0) 2020.02.06
DJango (Windows)  (0) 2020.01.31

IOT (Indexed Organized Table)

Database 관리/Oracle
반응형
  IOT Table
행구분 PK. ROWID 가 없다. ROWID
FULL SCAN 시 리턴 순서 PK 순에 따라 출력 없다.
Unique Constraint 불가  
Cluster 불가  
저장공간 Table 보다 감소  
Primary Key 필수  
Secondary Index PK + UROWID ( Universal Rowid based pk )  
장점 Auto Ordering  
반응형

'Database 관리 > Oracle' 카테고리의 다른 글

sql to csv  (0) 2020.04.07
SQL Developer 설치  (0) 2020.02.27
NESTED TABLE Column  (0) 2020.02.11
Oracle.Client.SQLPlus.1x.Ubuntu21 설치 ( window, linux 방식 동일 )  (0) 2020.01.17

NESTED TABLE Column

Database 관리/Oracle
반응형

참조) https://m.blog.naver.com/geartec82/220954927715

 

테이블 안에 특정 컬럼 값이 테이블 구조처럼 관리하고 사용되어 지는 방식을 말한다.
자동적으로 group by 형태로 저장하는 방식중에 하나이다.
 

 CREATE OR REPLACE TYPE my_tab_t AS TABLE OF VARCHAR2(30);
/
CREATE TABLE nested_table (id NUMBER, col1 my_tab_t)
       NESTED TABLE col1 STORE AS col1_tab;
      
SQL> desc nested_table
 Name                                      Null?    Type
 ----------------------------------------- -------- ----------------------------
 ID                                                 NUMBER
 COL1                                               MY_TAB_T

Insert data into table:

INSERT INTO nested_table VALUES (1, my_tab_t('A'));
INSERT INTO nested_table VALUES (2, my_tab_t('B', 'C'));
INSERT INTO nested_table VALUES (3, my_tab_t('D', 'E', 'F'));
COMMIT;

 



Select from nested table:
 

 SQL> SELECT * FROM nested_table;
        ID COL1
---------- ------------------------
         1 MY_TAB_T('A')
         2 MY_TAB_T('B', 'C')
         3 MY_TAB_T('D', 'E', 'F')

 



Unnesting the subtable:
 

 SQL> SELECT id, COLUMN_VALUE FROM nested_table t1, TABLE(t1.col1) t2;
        ID COLUMN_VALUE
---------- ------------------------
         1 A
         2 B
         2 C
         3 D
         3 E
         3 F
6 rows selected.

 



실예제>

nested table column을 통하여 한명의 고객이 주소값으로 여러개의 컬럼 값을 가질수 있게 관리합니다.
 

 CREATE TYPE address_t AS OBJECT (
   street  VARCHAR2(30),
   city    VARCHAR2(20),
   state   CHAR(2),
   zip     CHAR(5) );
/

CREATE TYPE address_tab IS TABLE OF address_t;
/

CREATE TABLE customers (
   custid  NUMBER,
   address address_tab )
NESTED TABLE address STORE AS customer_addresses;


INSERT INTO customers VALUES (1,
            address_tab(
              address_t('101 First', 'Redwood Shores', 'CA', '94065'),
              address_t('123 Maple', 'Mill Valley',    'CA', '90952')
            )                );

 



데이터 확인
 

 SQL> select c.custid, u.*
  2  from customers c, table (c.address) u
  3  ;

    CUSTID STREET                         CITY                 ST ZIP
---------- ------------------------------ -------------------- -- -----
         1 101 First                      Redwood Shores       CA 94065
         1 123 Maple                      Mill Valley          CA 90952

 


뷰에서 확인하는 방법

NESTED TABLE column 을 생성하면 USER_NESTED_TABLES and USER_NESTED_TABLE_COLS 두개의 뷰에서 확인할 수 있습니다.

뷰에서 NESTED TABLE,NESTED TABLE column 확인하는 방법
 

 SQL> select TABLE_NAME from USER_NESTED_TABLES;

TABLE_NAME
------------------------------
COL1_TAB

SQL> select TABLE_NAME,COLUMN_NAME from USER_NESTED_TABLE_COLS;

TABLE_NAME                     COLUMN_NAME
------------------------------ ------------------------------
COL1_TAB                       NESTED_TABLE_ID
COL1_TAB                       COLUMN_VALUE

반응형

'Database 관리 > Oracle' 카테고리의 다른 글

sql to csv  (0) 2020.04.07
SQL Developer 설치  (0) 2020.02.27
IOT (Indexed Organized Table)  (0) 2020.02.11
Oracle.Client.SQLPlus.1x.Ubuntu21 설치 ( window, linux 방식 동일 )  (0) 2020.01.17