728x90

분류 전체보기 68

[Django] Django MTV

장고는 MTV(Model - Template - View) 패턴을 기반으로 하는 프레임워크이다. MTV패턴이란 Model(데이터), Template(사용자 인터페이스), View(데이터 처리 로직)을 구분하여 한 요소가 다른 요소들에게 영향을 주지 않도록 설계한 방식이다. Model Model은 데이터 모델을 의미하며, 장고의 model 모듈을 이용하여 DB의 테이블과 일치하는 데이터 구조를 정의한다. 보통 하나의 모델은 하나의 테이블에 매핑되고, 클래스 내부의 attribute들은 DB 테이블의 필드를 나타낸다. 장고에서는 Django ORM이라 불리는 자체 ORM을 사용한다. ORM은 Objecte Relational Mapping의 약자로 SQL 언어를 사용하지 않고 DB작업을 가능하게 해 준다. ..

🐍Python | Django 2022.04.29

[Python] call by value? call by reference?

일반적으로 사용되는 함수 인자 전달 방식은 call by value, call by reference 두 가지이다. call by value는 함수의 인자를 받을 때, 변수에 담긴 값 자체를 복사하여 넘겨주므로 함수 내에서 해당 인자를 조작하여 바꿔도 원본은 변하지 않는다. 원본을 건드리지 않아 안전하지만, 함수의 사용으로 해당 전역 변수를 바꾸고자 하는 경우에는 리턴 값을 다시 전역 변수로 집어넣어야 하는 번거로움이 있을 수 있다. call by reference는 함수의 인자를 받을 때, 변수가 가리키는 주소 값을 전달함으로써, 함수 내에서 해당 인자를 조작하면 원본 변수의 주소 값으로 타고 들어가 해당 값 자체를 변경시킨다. 그렇다면 파이썬은 call by value일까? call by refere..

🐍Python | Django 2022.04.28

[Python] 메타클래스(MetaClass)

메타클래스에 대해 알아보기 전에 먼저 객체와 인스턴스에 대해 한번 짚고 넘어가자. 클래스로 만든 객체를 인스턴스라고 한다. 그렇다면 객체와 인스턴스의 차이는 무엇일까? 예를 들어 a = Person() 이렇게 만든 a는 객체이다. 그리고 a 객체는 Person의 인스턴스이다. 즉, 인스턴스라는 말은 특정 객체가 어떤 클래스의 객체인지를 관계 위주로 설명할 때 사용된다. 파이썬에서의 모든 것은 객체이다. 따라서 클래스도 객체이다. 그렇다면 클래스를 만들기 위한 클래스가 필요하다는 말이 되는데, 클래스를 만들기 위한 클래스는 무엇일까? 바로 이것이 메타클래스이다. 메타클래스는 우리가 재정의해주지 않으면 기본적으로 클래스를 만드는 클래스로 정해져 있다. 만약, 특정 클래스를 만들 때, 특별한 규칙을 적용하고 ..

🐍Python | Django 2022.04.27

[Python] main 함수

파이썬에는 main 함수가 따로 존재하지 않는다. 파이썬으로 개발을 하다보면 if __name__ == '__main__': 으로 시작하는 구문을 만날 수 있는데, 이 구문이 의미하는 것이 현재 파일이 프로그램의 시작점이 맞는지 판단하는 것이다. # main.py def main(): print('This is Main Function') if __name__ == '__main__': main() # 실행 결과 # $ python main.py # $ This is Main Function 위와 같이 사용할 수 있다. 파이썬에서 Main함수는 이렇게 사용하는구나~ 하고 넘어갈수도 있지만 조금 더 자세히 알아보자. # addition_module.py def add(a, b): return a + b #..

🐍Python | Django 2022.04.26

[Python] Class와 상속(Inheritance)

파이썬에서의 상속이란 부모 클래스의 속성과 함수를 그대로 물려 받는 것이다. 자식 클래스에서는 물려받은 부모 클래스의 속성과 함수를 사용할 수 있다. class Parent: def __init__(self, name='짱구', age=5): self.name = name self.age = age def introduce(self): print(f'내 이름은 {self.name}이고, 나이는 {self.age}살이야.') class Child: def __init__(self): super().__init__() child = Child() child.introduce() # 내 이름은 짱구이고, 나이는 5살이야. 일반적인 메서드 오버라이딩은 부모 클래스의 메서드를 자식 클래스에서 재정의 하는 것이고,..

🐍Python | Django 2022.04.19

[Python] Decorator

Decorator란 이미 작성된 함수에 새로운 기능을 추가하여 함수를 확장시키는 개념으로, 일반적으로 함수의 전처리나 후처리에 대한 필요가 있을 경우 사용한다. 함수명 위에 @데코레이터로 사용할 함수 이름을 적어주면 된다. 예시를 보자. 만약, 서버에서 사용자에 관련된 메서드를 만든다고 하면 다음과 같은 순서로 처리하게 될 것이다. # 1. 권한체크 (전처리) # 2. 요청에 대한 처리 (본 로직) # 3. 로그 수집 또는 오류 처리 (후처리) def create_user(*args): if check_auth(): # main logic log() def update_user(*args): if check_auth(): # main logic log() def delete_user(*args): if ..

🐍Python | Django 2022.04.18

[Python] Under Score(_)?

다른 언어에 비해 파이썬에서 언더스코어의 의미는 특별하다. 파이썬에서 언더스코어는 어떤 의미로 쓰일까? 먼저, 인터프리터에서 사용되는 경우 마지막으로 실행결과 값을 저장하는 변수로 사용될 수 있다. >>> 15 15 >>> _ 15 >>> _ + 5 20 >>> _ * 10 200 다음으로 어떤 값을 무시하고 싶은 경우 사용할 수 있다. (I don't care) # 언패킹 시 특정값을 무시, 여러 값을 무시 a, _, b = (1, 2, 3) # a = 1, b = 3 a, *_, b = (1, 2, 3, 4, 5, 6, 7) # a = 1, b = 7 # 인덱스를 무시할 때 for _ in range(10): pass 또한, 특별한 의미의 네이밍을 하는 경우 _single_leading_undersc..

🐍Python | Django 2022.04.14

[Python] String join()/split()

문자열을 다루다 보면 특정 문자를 기준으로 문자열을 나눠야 하는 경우가 종종 있다. 이 경우 split() 함수를 자주 사용하게 되는데 기본 사용법은 아래와 같다. 문자열.split(구분자) str = "Hello world" str_split = str.split() print(str_split) # ['Hello', 'world'] 위와 같이 구분자 파라미터에 아무 값도 입력하지 않으면 공백을 기준으로 문자열을 나누게 된다. str_date = '2022-02-07' split_str_date = str_date.split('-') print(split_str_date) # ['2022', '02', '07'] 위와 같이 특정 문자를 구분자로 하여 문자열을 나눌 수도 있다. 다음으로 리스트의 문자열들..

🐍Python | Django 2022.02.07

[PostgreSQL] UPDATE/DELETE JOIN

PostgreSQL에서 UPDATE 시 다른 테이블의 내용을 참조하여야 할 때 다음과 같이 사용 가능하다. UPDATE product SET "Amount" = 1 FROM material m, worker w WHERE m.id = product."Material_id" AND w.id = product."Worker_id" AND m."Code" = 'test' AND w."Name" = '홍길동' INNER JOIN과 LEFT JOIN 구문 사용할 수 없고, 위와 같은 방식으로 from절에 테이블들을 나열하여 사용한다. UPDATE의 target이 되는 테이블은 from절에 들어가지 않는다는 것을 유의하자! DELETE문에서 JOIN을 사용해야 할 때, 다음과 같이 사용한다. DELETE FROM ..

💾DB 2022.01.24

[PostgreSQL] import csv file

개발을 하다 보면 엑셀로 정리된 데이터를 DB 테이블에 Insert 하여 작업하는 경우가 종종 있다. 이런 경우 엑셀 데이터를 Postgresql DB로 Import 하는 방법에 대해 알아보자. 예를 들어 다음과 같은 데이터가 있다고 생각해보자. 첫 번째 열부터 순서대로 이름, 나이, 주소를 나타내는 인적정보에 관한 데이터이다. 다음 데이터를 csv파일로 저장하게 되면 다음과 같은 형태로 저장되고, 기본적인 csv파일 저장 옵션은 ','(쉼표)로 구분이다. 이제 csv파일을 가지고 Postgresql DB에 Import 해보자. copy 테이블명(id, field1, field 2) from 'C:\test.csv' with delimiter ',' csv header; 위와 같은 명령어로 csv파일을 ..

💾DB 2021.08.25

[PostgreSQL] import csv file with pgAdmin

지난 포스팅에 이어 pgAdmin을 사용하여 엑셀 데이터를 Postgresql DB로 Import 하는 방법에 대해 알아보자. 위와 같이 pgAdmin화면에서 import 하고자 하는 테이블을 우클릭하여 나오는 메뉴들 중 Import/Export를 선택한다. 이후 다음과 같이 순서대로 Import/Export를 설정, 파일 경로 지정, Header옵션 선택, Delemiter 지정 순으로 진행한다. 위와 같이 진행하면 끝!! 쿼리 또는 pgAdmin을 사용하면 간단하게 csv파일을 import할 수 있다. 본인의 상황에 맞게 사용하면 조금 더 슬기로운 개발생활을 이어나갈 수 있지 않을까 생각해본다.

💾DB 2021.08.25
728x90