요즘 'Learn python the hard way'를 통해서 python을 공부하던 중 46번째 exercise에서 막혔다.

이 과정에서 1번부터 어떻게 하는지 몰라서 다음 과정을 진행하지 못했었다. 1번의 경우 아직 어떤 package도 설치되어 있지 않은 상태이기 때문에 저 링크를 통해 들어간 웹사이트에서 get-pip.py라는 파일을 직접 다운로드를 받아서 실행해야 되는 것이었다. get-pip.py를 실행하고 나서 환경 변수 설정을 마치면 설치가 완료된다. 환경 변수는 두 가지 방법으로 설정할 수 있다.

1. 시스템 > 고급 시스템 설정 > 환경 변수 > Path 에 도달한 뒤 편집을 하는 방법

경로 뒤에 ;을 붙이고 파이썬 설치 경로에 \Scripts 을 붙이고 추가해주면 된다.

2. 명령어로 직접 설정하는  

[Environment]::SetEnvironmentVariable("Path","$env:Path;C:\Python27\Scripts", "User") 을 shell에서 직접 입력하면 된다.

위와 같이 환경 변수를 설정해야 하는 이유는 pip 파일이 없는 곳에서도 pip를 사용할 수 있게 하기 위함이다.

이렇게 pip를 설치하면 2, 3, 4번에 나와있는 'distribute', 'nose', virtualenv' package들은 다음과 같은 명령어로 쉽게 설치 할 수 있다.

python -m pip install 'SomePackage'

모든 package의 설치를 마치고나서 exercise46의 지시사항데로 디렉토리와 파일을 작성하고 test를 해보았으나 또 에러가 발생하였다.

이 에러와 관련해서 검색을 많이 해봤지만 대부분의 답변이 package들을 제대로 설치하라는 것이었다. 내 경우는 이미 설치는 제대로 되어 있어서 원인이 무엇일까 생각해 본 결과 '권한의 문제가 아닐까'라는 생각을 하게 되었다. 리눅스의 경우는 실행하려는 명령어 앞에서 'sudo'를 붙이면 관리자 권한을 실행이 되는데 windows의 powershell에서는 이것을 가능하게 하는 방법을 찾던 중 다음과 같은 두 가지 방법을 알아냈다.

1. Powershell을 우클릭한 후 관리자 권한으로 실행

2. Powershell을 실행하고  Start-Process powershell -Verb runAs를 입력

위 두 방법 중 한 가지를 택해서 powershell을 실행하고 테스트를 한 결과는 다음과 같다.

learn python 홈페이지에 나와있는 결과물을 그대로 확인 할 수 있다.


얼마전 연구실에서 실험을 돌릴 때 특정 index에 해당하는 문제를 대상으로 프로그램을 돌려야 하는 일이 있었다.
인덱스를 쿼리로 따로 뽑아서 돌려도 되지만 view형태로 만들어서 출력해 놓으면 일도 분담할 수 있고 보다 보기 편할 거 같아서 view를 생성해 두었다.

그런데 친구가 묻기를 

'view와 table이 어떻게 다른거야??'

나름 직전학기 Database 과목 조교였던 나였지만 이 질문에 쉽게 대답을 하지 못하였다.

'그러게... key가 있고 없고의 차이인가??'

이 정도로 대답하고 속으로도 view는 어떤 기능을 하는 것일까 생각만하고 필요한 실험만 돌렸다.
그렇게 실험을 하던 중 view와 table의 차이를 발견하게 되었다.

view를 생성하기 위해 참조하였던 table에 새로운 데이터가 추가되거나 변경됨에 따라 view가 시시각각 변하는 것이었다.

아.. 비로소 감이 왔다. view를 생성할 때 사용되는 query문의 형식은 다음과 같다.

CREATE VIEW             WORKS_ON1

AS SELECT                 Fname, Lname, Pname, Hours

     FROM                   EMPLOYEE, PROJECT, WORKS_ON    

     WHERE                 Ssn=EssnAND Pno=Pnumber;

찾아보니.. 내가 강의한 자료에도 있다.


Efficient view implementation

-Query modification: present the view query in terms of a query on the underlying base tables

-View materialization: involves physically creating and keeping a temporary table

   maintaining correspondence between the base table and the view when the base table is updated: incremental update


여튼 간단한 걸 길게 써봤는데.... 이런식으로 체감하면서 느끼는 것은 절대 안 잊어버릴 거 같아서 길게 써봤다.


+ Recent posts