언어/파이썬 & 장고
-
[Django] 존재하는 테이블 스키마 Django로 복사 방법언어/파이썬 & 장고 2017. 5. 11. 15:24
사전작업virtualenv로 django를 설치한 경우Pycharm 내의 터미널을 사용하실 경우 선택된 interpreter에 따라 자동으로 변경되므로 아래와 같은 작업을 할 필요가 없습니다.예시) djangoDjango라는 virtualenv를 생성한 경우$ cd virtualenv $ source bin/activate (virtualDjango) $ # virtualDjango라는 virtualenv 터미널에 접속한 상태 # virtualenv 접속해제는 deactivate $ 프로젝트로 이동터미널settings 파일이 쪼개져 있지 않은 경우$ python3 manage.py inspectdb > models.py (아무이름이나 가능)settings 파일이 쪼개져 있는 경우$ python3 mana..
-
[Python] len()과 sys.getsizeof() 차이점언어/파이썬 & 장고 2017. 3. 27. 19:55
len()은 컨테이너에 포함된 항목의 수를 계산합니다. 다시 말해 문자열일 경우 문자의 길이를 반환하고 컨테이너타입인 튜플, 딕셔너리, 리스트의 경우는 속해있는 값의 개수를 반환합니다.반면 sys.getsizeof()는 객체의 메모리 사이즈를 바이트 단위로 반환합니다. 객체는 모든 유형이 될 수 있습니다.파이썬 문자열 객체는 문자 당 1바이트의 간단한 문자 시퀀스가 아닙니다. 특히, sys.getsizeof()함수에는 가비지 컬렉터의 오버헤드(아마 1바이트)가 포함되어 출력됩니다. getsizeof()는 object의 __sizeof__ 메서드를 호출하고 object가 가비지 컬렉터에서 관리되는 경우에는 가비지 컬렉터의 오버 헤드를 추가합니다.예시# python 3.4 import sys en = 'a'..
-
[Python] pyximport언어/파이썬 & 장고 2017. 2. 18. 15:12
pyximport는 Cython의 한 부분입니다. import를 해서 사용할 수 있습니다. 만약 특별한 C 라이브러리를 요구하지 않거나 특별한 setup을 빌드하기를 원하지 않으면 pyximport 모듈을 사용하면 됩니다. pyximport을 import하면 setup.py을 작성하지 않고 .pyx파일을 직접 로드할 수 있습니다.import pyximport; pyximport.install() >>> import helloworld Hello World
-
[Python] psycopg2 모듈을 사용한 효율적인 PostgreSQL bulk insert언어/파이썬 & 장고 2017. 2. 16. 20:06
PostgreSQL은 데이터를 관리, 구성, 질의 및 검색하는 데 매우 뛰어나지만 Insert 자체가 매우 느릴 수 있습니다. PostgreSQL에서 가장 빠른 Insert 방법은 COPY문을 사용하는 것입니다. 응용 프로그램이 PostgreSQL을 사용할 수 있는 권한이 있다고 해도 소프트웨어 구성 요소 간에 엄격한 기능 분리를 유지하는 관점에 있어서는 COPY문을 사용하는 것을 권하지 않습니다. 다음은 COPY문을 제외한 100,000개의 row들을 insert할 때 찾은 효율적인 방법을 소개합니다.Test 구성테스트는 아래의 테이블에 insert하는 데 걸리는 시간을 기준으로 합니다.CREATE TABLE upload_time_test( uuid uuid primary key default uuid..
-
[Python] 상위, 하위 , 동일 폴더 내 모듈 from, import 하는 방법언어/파이썬 & 장고 2017. 2. 16. 10:08
먼저 프로젝트 구조가 아래와 같이 구성되어 있다고 가정합니다.project -- test +-- sub1 -- __init__.py -- aa.py -- bb.py +-- sub2 -- __init__.py -- cc.py -- dd.py -- ee.py -- ff.py -- __init__.py -- gg.pyee.py에서 다른 모듈 참조 (하위 폴더 내 파일, 동일 폴더 내 파일 참조)이와 같은 방법은 간단합니다.# aa.py를 참조할 경우 from sub1 import aa # ff.py를 참조할 경우 import ff # 또는 from . import ff # from . 은 동일폴더라는 의미를 나타냄.상위 폴더 내 파일 참조예를들어 aa.py에서 sub2에 있는 cc.py을 참조하는 방법은 두 ..
-
[Python] 병렬처리 (Concurrent.futures)언어/파이썬 & 장고 2017. 2. 15. 17:13
Python3.2 에서 concurrent.futures 모듈이 추가되었습니다. 이 모듈은 멀티스레드와 멀티 프로세스에 대한 고수준 API를 포함하고 있으며 스레드 풀/프로세스 풀 기반의 동작을 기본적으로 지원합니다.파이썬 제약 : GILPython은 두 개 이상의 스레드가 동시에 실행될 때 두 개 이상의 스레드가 하나의 자원을 동시에 액세스할 때 발생할 수 있는 문제점을 방지하기 위해 GIL(Global Internal Lock)이라는 것을 도입했습니다. 즉, 스레드가 실행될 때, 프로그램 내의 리소스 전체에 락이 걸립니다. 결국 Python 구현에서는 동시에 몇 개의 스레드가 실행이 되던 간에 GIL에 의해서 한 번에 하나의 스레드만 실행됩니다. 멀티 스레드의 경우 문맥교환(Context Switch..
-
[Python] Tip - 큰 따옴표, 작은 따옴표 (Double Quote, Single Quote)언어/파이썬 & 장고 2017. 2. 15. 15:16
파이썬에서 문자열을 지정하는데에는 큰 따옴표(")와 작은 따옴표(')가 있습니다. 두 가지가 존재하지만 어떤 것을 사용하던 전부 똑같습니다.single = 'abcde가' double = "abcde가" assert single == double print("single == double") assert single is double print (single is double) # 결과 # single == double # True 규칙은 아니지만 큰 따옴표와 작은 따옴표를 섞어쓰면 혼란을 야기할 수도 있으므로 아래와 같이 규칙을 정해 사용을 권합니다.큰 따옴표 " (Double Quote)텍스트작은 따옴표 ' (Single Quote)기호, 식별자3개의 큰 따옴표 """docstrings, 정규표현식기..
-
[Python] Postgresql - SSL error decryption failed or bad record mac 에러 해결법언어/파이썬 & 장고 2017. 2. 14. 16:39
ssl error decryption failed or bad record mac 에러... 이전에 uWSGI에서도 문제가 발생한 적이 있었습니다. 이번에는 PostgreSQL 파이썬 모듈인 psycopg2에서 발생했습니다. 원인을 찾아보니 이러한 에러가 발생한 것은 PostgreSQL쪽이 아니라 ProcessPoolExecutor (병렬처리) 부분이였습니다. 원인DB connection과 cursor를 전역변수로 선언한 다음, 병렬처리를 실행하려 할 때 아래와 같이 함수에서 공통적으로 cursor, conn을 사용하려 하면 위와 같은 에러가 발생합니다.from concurrent.futures import ProcessPoolExecutor def concurrent(list): for i in lis..
-
[Python] MongoDB (pymongo)언어/파이썬 & 장고 2017. 2. 8. 10:45
Mongo DB 용어SQL 용어MongoDB 용어일반 용어데이터베이스(database)데이터베이스(database)테이블(table)콜렉션(collection)행(row)문서(document) / BSON 문서(BSON document)컬럼(column)필드(field)인덱스(index)인덱스(index)테이블 조인(table join)임베디드 문서 및 링킹(embedded documents and linking)주키(primary key)주키(primary key)특정 컬럼을 주키로 지정주키가 _idfield로 자동 설정됨집계(aggregation, 예: group by)집계 파이프라인(aggregation pipeline)Python 내 Mongo DB 모듈 설치$pip3 install pymongo..
-
[Django] QuerySet 에서 dict 타입 변환하기언어/파이썬 & 장고 2017. 2. 1. 20:30
queryset to dict!QuerySet은 대개 Django ORM의 filter()함수를 사용할 때 (1개 이상의 데이터가 반환될 때) 갖게 되는 타입입니다.이러한 타입을 그대로 사용하려고 하면 아래와 같이 출력이됩니다.a = ModelObj.objects.filter(col=1) # 결과 {col:[1], .... ,}위와 같이 value값에 리스트가 씌워져 있는 것들을 확인할 수 있습니다. QuerySet의 변환은 아래처럼 간단하게 dict로 변환이 됩니다.a = ModelObj.objects.filter(col=1) print(a.values()) # 결과 {col:1, .... ,}