python에서는 한글을 출력 하기 위해서는... 해주어야 할 부분이 있습니다.

그냥 출력을 하겠다고

이런식으로 하게 되면
 SyntaxError: Non-ASCII character '\xc7' in file D:\eclipse_workspace\PythonSqlite\src\pythonsqlite.py on line 3, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

와 같은 오류를 나타내게 됩니다.
이유는... 코드페이지가 맞지 않다는 것이지요...
http://www.python.org/peps/pep-0263.html
페이지로 가면 적당한 코드 페이지 활용 법도 나오게 됩니다.

그중에서 한글을 출력하기 위해서는

와 같이 맨 위에
# -*- encoding:utf-8-*-
넣어 주어야 한글이 출력이 됩니다.. 이렇게 하니면
# -*- encoding:euc-kr-*-
이라고 넣어 주어야 하겠지요...
저같은 경우는... utf-8 코드를 많이 사용하기 때문에... : )

딕셔너리.. 맵에 데이터를 넣고 정렬할게 생겨서... 할려다 보니... 어찌해야 하나 고민하게 되었다...
음... c++의 stl에서는 잘 되는것인데...
그래도 찾다보니
key값으로 sorting하는것은

dickeys = dic.keys()
dickeys.sort()
for i in dickeys:
      print i, dic[i]

그러면... value로 sorting 하는 방법은...
diclist = []  
for i in dic.keys():
      diclist.append( (i, dic[i]) )
diclist.sort( key = lambda(x,y):y )

for i in diclist:
      print i[0], i[1]   

음... 이 방법 이외에...
from operator import itemgetter

dict = {}
dict['a'] = 2
dict['b'] = 1
dict['c'] = 5

print sorted(dict.iteritems(), key=itemgetter(1), reverse=True)

로 하게 되면... value의 값으로 정렬을 하게 된다는거...
음... python.. 쉬우면서도 어려운... ㅎㅎ

python.... 스크립트 언어는 속도가 많이 느리다...
당연히 C 보다는 느리다는 얘기...
하지만 python에는 다양한 모듈이 많이 있다... 그 중에서도 속도를 C만큼은 아니지만
솔직히 C 보다는 조금 느리다... 하지만 기존의 속도보다는 많이 빠르게 하는 모듈이 있다...
psyco
이 모듈을 이용하면... 상당한 연산 속도를 높일 수 있다...
음... 기본적으로 mod_python을 잡고난 다음에...
httpd.conf 파일을 설정해 줘야 하는..문제...

<Location "/mysite/">
    SetHandler python-program
    PythonHandler django.core.handlers.modpython
    SetEnv DJANGO_SETTINGS_MODULE mysite.settings
    PythonDebug On
    PythonPath "['/path/to/project'] + sys.path"
</Location>

mysite는 자신의 프로젝트 이름이다...
하지만 <Location "/mysite/">에서는... 웹에 주소 입력시... ex) http://localhost/mysite 하였을 때 나타나게 되는 것...
이름은 변경해도 되나... mysite.settings는 프로젝트이름.settings 이어여 한다는것...

이렇게 했는데... 리눅스에서 eggs... 어쩌고 하면서 permision denied라는 에러가 보이게 된다면...
import os
os.environ['PYTHON_EGG_CACHE'] = '/some/directory'
의 내용을 넣어서 임의의 파일을 만든다... 음... 파일의 위치는 프로젝트 안이여도 좋고... 아니여도 좋고~
나는... eggs.py라고 해서 /var/www 안에 넣었음...
그리고 나서

httpd.conf(debian 계역에서는 apache2.conf)파일 안에다가
PythonInterpreter my_django
PythonImport /path/to/my/project/file.py my_django
의 내용을 넣는다... 이렇게 하면... 문제 해결...

여기에다가... 위와 같이 Location하고 났을 때... 음... python manage.py runserver 하고 나서 나왔던 media정보들에 대한 문제...의 해결은...
httpd.conf 파일 안에다가...
Alias /media/ /var/www/asdf/asdf/asdf....
즉 Alias /media/ media의 dir이 있는 위치를 적어주면 된다...
음... 이렇게 해서 우선 보여지는 것들은 해결...

# -*- coding: ms949 -*-
from math import *
from datetime import *


def main():
    now1 = datetime.now()
    result = 0
    for i in range(1000000):
        result = result + pow(i,2)

    now2 = datetime.now()
    
    time = now2-now1
    print "결과 : ", result
    print "시간 : ", time
     
main()

  • DB API : Python에서 JDBC 같은 역할
  • http://mysql-python.sourceforge.net/ 에서 MySQL 모듈 받음
  • 혹은, sudo apt-get install python-mysql
  • User Guide
  • http://www.devshed.com/c/a/Python/MySQL-Connectivity-With-Python/
  • Python DB API
  • Writing MySQL Scripts with Python DB API
  •  

    1. import MySQLdb
      # DB접속
      db = MySQLdb.connect(db='DB명', user='사용자명', passwd='비밀번호', host='원격서버')

      # 커서생성
      cursor = db.cursor() # 모든 DB 작업은 캐서를 통해서

      # SQL 문 실행 : update 류일 경우에는 영향 받은 레코드 개수
      cursor.execute('''
      SQL 문장
      ''')

      # select
      cursor.execute('select ....')
      cursor.rowcount; # 결과 행수
      cursor.description; # 각 필드 특징 (필드명,데이터형_코드, 표시크기, 내부크기, 정확도, 비율, nullable)

      cursor.fetchone(); # 결과 한개, 더이상 레코드 없으면 None
      curor.fetchmany(); # n 개의 결과. 튜플
      cursor.fetchall(); # 남은 결과 전체. 튜플

      # 튜플이 아닌 사전 형식으로 필드 가져오기
      cursor = db.cursor(MySQLdb.cursors.DictCursor)
      # 위 형태로 커서를 가져오면 fetch*() 메소드 실행 결과가 필드명을 키로 한 사전이다.
    2.  
    3. 커밋/롤백
      db.commit()
    4. db.rollback()

    5. # DB 작업 종료
      cursor.close()
    6. db.close()


    참고로...
    아직 MySQLdb 모듈이 python 버전 2.5까지밖에 지원을 안해주는군요...
     

    + Recent posts