07 Jun 2009
Google App Engine 에서 제공하는 파이썬(python) SDK로 개발을 할 때, Datastore API를 이용하여 DB를 모델링하고 자료를 넣을 겁니다. 이 중 get_or_insert 라는 유용한 클래스 메서드가 있는데, 지정한 값이 있으면 DB에서 그 자료를 가져오고, 없으면 DB에 그 자료를 집어넣습니다.
이렇게 쓰면 됩니다.
모델.get_or_insert(키, 값들)
Hannal 이라는 모델을 예로 들지요.
class Hannal(db.Model):
name = db.StringProperty(required=True)
name이라는 프로퍼티만 있는 클래스이지요. 이 모델에 자료를 하나 넣어보지요.
Hannal.get_or_insert('key_0000001', name=u'Hannal Cha')
이러면 key_0000001 를 키(id)로 갖는 자료를 찾아보고 있으면 그걸 가져오고 없으면, key_0000001를 키로 하고 name 은 u'Hannal Cha'인 자료를 집어넣습니다.
주의할 점은 바로 이 키인데요. 이 키 문자열 맨 앞이 숫자로 시작하면 Names may not begin with a digit 라는 오류가 납니다. 키 자료형이 문자형이어도 마찬가지입니다. 자료형을 따지는 게 아니라 키 문자열의 맨 앞 문자가 숫자인지를 따집니다.
유레카! 를 외칠만큼 위대한 발견을 한 건 아닙니다. 오류 내용에서도 비록 영문이긴 하지만 숫자(digit)으로 시작하면 안 된다고 알려주니까요. 다만, 보통은 키라 하면 일련번호 id로 관리하기 때문에, 그리고 저처럼 초보들은 눈에 익지 않은 오류가 나면 겁부터 먹기 때문에 종종 당할 듯 해서 적어둡니다. 저는 친절하거든요.
14 May 2009
왜 다음이나 네이버 같은 포털 웹서비스들은 일기예보 정보를 제공할 때, 어제 날씨를 함께 볼 수 있게 하지 않을까?
아침에 잠자리에서 일어나기 힘들거나 관절이 뻑뻑하거나 하늘이 수상쩍으면 웹에서 날씨를 확인하곤 한다. 내 몸이 날씨를 느끼는 것보다 기상청에서 날씨 예측하는 게 더 많이 틀려서 자주 확인하진 않는다. 예를 들어, 기상청에서 비 올 확률이 30%라고 한다면 이 말은 비가 오지 않을 확률이 70%라고 억지 부릴 수 있기 때문이며, 반대로 비 올 확률이 70%라면 굳이 기상청 예보가 아니더라도 하늘을 올려다보거나 내 혈압 상태와 관절만 확인해도 비 올 확률이 아주 높다는 걸 알 수 있기 때문이다.
요즘처럼 기온이 그날 그날 많이 다를 때 더 그렇다. 기온이 그다지 높을 것 같지 않아 얇지만 긴 팔을 입었는데 햇볕이 쨍쨍해서 땀냄새 풍기고 다닐 수 있고, 더울 것 같아 반팔 입었는데 쌀쌀해서 아침 저녁으로 고른 살결을 가진 팔뚝에 닭살을 달고 다닐 수 있다. 아침에 일어나 집을 나서기 전에 이런 상황을 피할 적절한 판단을 5~10분 사이에 내려야 하는데, 영 아리송할 때엔 기상청 일기예보를 확인한다.
기상청 일기예보라고는 해도 기상청 누리집에 가는 건 아니고, 주로 다음이나 네이버 같은 포털에 가서 날씨를 확인한다. 웹 브라우저 주소 입력란에 kma.go.kr 이라고 치는 것보다 daum.net 이라고 치고 검색란에 “날씨”라고 입력하는 게 더 손에 익고 편하기 때문이다. 근데 참 불편한 점은 다음이나 네이버 모두 오늘부터 며칠 후까지 일기예보 정보를 제공할 뿐, 어제 날씨 정보를 제공하지 않거나 확인하기 무척 어렵게 해놨다.
오늘 최고 기온은 24도이고 최저 기온은 14도라고 한다. 근데 23도는 쬐금 덥고 24도는 쬐금보다 쬐금 더 덥고, 25도는 쬐금보다 쬐금 더 더운 것에서 아주 쬐금 더 더운 것일까? 14도일 때 반팔을 입으면 닭살이 5제곱 센티미터만큼 돋고, 13도이면 6제곱 센티미터만큼 돋는 것일까? 알 수 없는 노릇이다. 30도 이상이면 덥겠고 10도 정도라면 쌀쌀하겠고 0도 정도라면 춥겠거니 하고 만다. 비가 올 지 안 올 지는 여부를 그다지 믿지 않는데, 기온도 그다지 공감을 일으키질 못하니 다음이나 네이버에서 제공하는 일기예보 정보는 내게 시덥잖은 정보가 되고 말았다. 절대음감도 아니고 절대냉온감을 지녀 기온 수치를 보고 그 정도를 미리 알 수 있을 리 만무하다. 절대냉온감(이런 말이 있긴 있나?)을 갖지 못한 사람한테 절대 값을 주는 꼴이다.
하지만, 어제 날씨를 함께 제공하면 이 건조하고 불친절한 기온이나 비 올 확률은 더 많은 정보를 알 수 있다. 어제 날씨를 경험해보니 좀 쌀쌀했는데 낮 기온이 17도였고, 오늘 낮 기온이 19도라면 19만큼 쌀쌀하거나 따뜻하다고 생각하는 게 아니라 어제보다 좀 더 따뜻하게 입으면 되겠다는 생각을 할 수 있기 때문이다. 어제 비 올 확률이 30%였는데 하늘이 배탈난 마냥 꾸룩거리기만 했을 뿐 결국 비가 오지 않았다면, 오늘 비 올 확률 40%는 비가 안 올 확률이 60%라고 느껴지기보다는 비 올 40% 확률을 좀 더 신경 쓸 것이다.
일기예보이니 지나간 어제 날씨를 제공하지 않는 것일까? 함께 보면 더 정보전달력이 좋을텐데.