Set nocount on 옵션 설정하기

MS SQL을 사용하다보면 set nocount on 옵션을 사용해야 할 때가 있습니다. 대부분은 SQL 서버에 설정된대로 사용하기 마련인데요. MS SQL에서는 Stored procedure(SP)에서 작업을 많이 하게 되는데요. 업무 로직이 복잡한 경우 데이터 쿼리가 복잡해지고 inset, update 등 여러 작업이 이루어집니다. 그런 경우 수행하는 쿼리가 느려지는 경우가 있는데 그 중에 한가지 원인이 print나 select 문 같은 출력문도 영향을 줄 수 있습니다. 프로그래머가 데이터 확인을 위해서 중간중간에 select, print문을 과도하게 넣는 경우에도 성능의 저하를 줄 수 있기 때문에 가급적이면 적게 넣어야 좋겠습니다. 앞에 서두가 길었는데 insert, update, delete와 같은 명령을 수행하면 수행결과가 표시됩니다. 몇개의 행이 업데이트 되었다 또는 삭제되었다와 같은 수행결과가 출력되지 않게 하는게 set nocount on입니다. 설정하는 방법은 간단합니다. 수행하려는 작업창을 열어서 set nocount on 이라고 앞에 선언을 하면 끝입니다. 그 다음 수행하는 모든 쿼리문의 수행결과가 나타나지 않습니다. 그리고 다시 표현하게 하려면 set nocount off라고 하시면 됩니다. 대개의 경우 Sp를 작성할때 사용하는 경우가 많습니다. 업무를 하는 중에는 쿼리 결과를 확인해야 되기 때문에 설정을 하지는 않고 대량쿼리 작업을 해야하는 경우에는 별도로 설정을 해서 하는 경우도 있는데요. 이 옵션은 수행하는 쿼리창에만 영향을 주기 때문에 새 창을 여는 경우에는 적용되지 않아 다시 옵션을 줘야합니다 사용방법은 MSDN에 나와있는 예제처럼 사용하시면 됩니다. -- SET NOCOUNT to ON to no longer display the count message. SET NOCOUNT ON; GO SELECT TOP(5) LastName FROM Person.Person WHERE Last

Jupyter notebook 실행시 디폴트 경로 변경

윈도우에 anaconda를 설치후 notebook을 실행하면 실행경로가 윈도우의 사용자 계정 아래에 실행되는데 루트에서 상위 경로로 접근할수가 없어서 root 경로를 변경해야 한다. root 경로를 변경하는 방법은 사용자 계정아래에 .jupyter 폴더를 찾아간다. 설치만 하면 파일이 없을수 있는데 아래의 명령으로 config 파일을 생성한다. jupyter notebook --generate-config jupyter_notebook_config.py 파일이 생성되는데, 파일을 열어서 notebook_dir 를 찾는다. 주석으로 되어있는 경로를 주석해제하고 아래와 같이 변경한다. c.NotebookApp.notebook_dir = u'C:\\bigdata' 다시 노트북을 실행하면 C 드라이브의 bigdata폴더가 루트가 된다.

django admin 에 action 추가하기

django admin에서 데이터를 삭제하는 기능밖에 없는데,  다른 추가기능을 하고 싶으면 actions에 기능을 추가한다. admin 필드에 함수를 생성하고 아래와 같이 actions 목록에 추가한다. 함수에는 modeladmin, request, queryset 파라미터가 들어간다. queryset에 모델에 대한 쿼리셋 결과가 들어간다. 아래 코드는 수정하는 모델에 필드값을 U로 업데이트하는 내용이다. short_description 에는 admin에서 콤보목록에 보이는 값을 설정한다. def make_used(modeladmin, request, queryset):     queryset.update(use_flag='U') make_used.short_description = "Make seller's user_flag = USE" @admin.register(Seller) class SellerAdmin(admin.ModelAdmin):     list_display = ['trade_code', 'trade_name', 'use_flag',                     'email', 'createdby', 'updatedby', 'username', ]     actions = [make_used]

django admin 에서 query절 변경하기

admin 을 작성할때 특정한 데이터만 보고 싶거나 쿼리를 수정하고 싶을 때가 있다.  예를 들면 로그인 사용자가 등록한 데이터만 조회를 하고 싶을 때가 있는데 이럴 때는 get_queryset 함수를 재정의하면 된다. get_queryset에는 request 파라미터만 들어간다.  부모의 쿼리셋을 받은 다음 qs.filter를 통해서 조건을 추가하면 된다.  샘플 코드는 아래와 같다. 추가로 하나더 모델정보를 저장할때 필드의 값을 모두 채워서 저장을 하는데 마찬가지로 특정값은 기본값으로 지정하고 싶을 때 save_model 을 재정의한다. 데이터 모델은 obj 변수에 값을 지정하고 save() 함수를 호출하면 된다.  @admin.register(Item) class ItemAdmin(admin.ModelAdmin):     list_display = ['id', 'seller', 'item_code', 'item_name', 'price', ]     readonly_fields = ('seller',)     def get_queryset(self, request):         qs = super(ItemAdmin, self).get_queryset(request)         if request.user.is_superuser:             return qs         return qs.filter(seller__username=request.user)     def save_model(self, request, obj, form, change):         seller = Seller.objects.get(username=request.user)         obj.seller = seller         obj.save()

django에서 i18n 지원 방법

django에서 i18n 지원 방법 django 프로젝트 공식 문서를 참고하자. https://docs.djangoproject.com/en/1.9/topics/i18n/translation/#how-django-discovers-language-preference i18n을 사용하려면 gettext를 설치해야 하는데 윈도우 용은 아래 링크를 클릭해서 설치를 한다. http://mlocati.github.io/gettext-iconv-windows/ settings.py 에서 MIDDLEWARE_CLASSES 에 django.middleware.locale.LocaleMiddleware 를 추가한다. MIDDLEWARE_CLASSES = [ ...     'django.middleware.locale.LocaleMiddleware',     'django.middleware.common.CommonMiddleware', ... ] ugettext_lazy 를 함수를 import한다. from django.utils.translation import ugettext_lazy as _ 언어설정 LANGUAGE_CODE = 'ko-KR' 언어목록 LANGUAGES = [   ('ko', _('Korean')),   ('en', _('English')), ] 언어 파일 경로 LOCALE_PATHS = (     os.path.join(BASE_DIR, 'locale'), ) settings.py에서 위와 같이 설정 후, python manage.py makemessages 명령을 내리면 언어파일 경로에 각 언어별로 폴더가 생성된다. django.po 파일이 생성되면 파일을 열어서 수정한다. msgid에는 소스에 있는 문구가 들어있고 msgstr에

Linux(Ubuntu 14.04)에서 Postgre 설치

1. Postgre 설치 커맨드창에서 아래와 같이 명령을 입력한다. sudo apt-get install postgresql Linux 에서 psycopg2 설치(django에서 DB API 어댑터설치) http://initd.org/psycopg/docs/install.html#install-from-a-package 커맨드창에서 아래와 같이 명령을 입력한다. sudo apt-get install python-psycopg2   또는 다음과 같이 pip로 설치가 가능하다. pip install psycopg2   현재 지원되는 버전은 다음과 같다. Python 2 versions from 2.5 to 2.7 Python 3 versions from 3.1 to 3.4 PostgreSQL versions from 7.4 to 9.4 참고링크) https://help.ubuntu.com/community/PostgreSQL postgres 가 기본 데이터베이스로 사용되고 관리계정으로  postgres가 사용된다. django에서 기본적으로 패스워드 설정이 안되어있으면 접속이 안되게 되어 있어 패스워드 설정도 해야한다. postgres계정으로 psql을 실행한다. $ sudo -u postgres psql postgres   postgres계정의 패스워드 설정(psql명령) \password postgres   Database 생성 $ sudo -u postgres createdb mydb  또는 postgres로 접속이 되었다면 createdb 명령으로도 생성이 된다. postgres 계정으로 접속하기 $ sudo -i -u postgres postgre 서비스 시작하기 sudo service postgresql start 서비스 재시작시 service postgresql restart   2. 장고에서 db 설정하기 https://docs.djangoproject.co

django 에서 404, 500 에러 처리하기

django 에서 404, 500에러가 발생시 Debug=True로 하면 웹서버의 정보가 보이는데 실서버에 이관시에는 DEBUG=False로 해야 한다. 그런데 에러가 발생시 서버에서 발생하는 에러 페이지를 보여주기 때문에 우리가 만든 웹페이지를 보여주기 위해서는 아래와 같이 handler를 등록해주면 내가 보여주고 싶은 페이지를 볼 수 있다. 아래와 같이 설정을 한다. setting.py DEBUG = False urls 파일에서 view를 만들고 보여줄 페이지 뷰를 설정한다. urls.py handler404 = 'kid.views.page_not_found_view' handler500 = 'kid.views.page_not_found_view' views 파일에서 html를 render한다. views.py def page_not_found_view(request):     return render(request,'page_not_found.html',RequestContext(request))