Posted
Filed under 프로그래밍/Python
>>> s.split(' ')
['Rajasekar', 'SP', '', 'def']
>>> s.split()
['Rajasekar', 'SP', 'def']
>>> s.partition(' ')
('Rajasekar', ' ', 'SP  def')
2014/09/30 17:29 2014/09/30 17:29
Posted
Filed under 프로그래밍/Python
>>> import random
>>> random.random()
0.90389642027948769

>>> random.randrange(1,7)
6
>>> random.randrange(1,7)
2

>>> range(1,7)
[1, 2, 3, 4, 5, 6]

>>> abc = ['a', 'b', 'c', 'd', 'e']
>>> random.shuffle(abc)
>>> abc
['a', 'd', 'e', 'b', 'c']
>>> random.shuffle(abc)
>>> abc
['e', 'd', 'a', 'c', 'b']

>>> abc
['e', 'd', 'a', 'c', 'b']
>>> random.choice(abc)
'a'
>>> random.choice(abc)
'd'

>>> menu = '쫄면', '육계장', '비빔밥'
>>> random.choice(menu)
'쫄면'
2014/09/30 17:29 2014/09/30 17:29
Posted
Filed under 프로그래밍/Python
이건 메뉴얼에도 있는거지만 나중에 찾기 쉽게 그냥 메모해둔다.
꼭 flask가 아니라 필요한부분에 사용하면되겠다.

from werkzeug.contrib.cache import RedisCache


cache = RedisCache(host='127.0.0.1',port=6379,db=4)

cache.set('my-item', 'value',timeout=50)
cache.get('my-item')


아래 flask메뉴얼하고 약간의 차이가 있다.


http://flask-docs-kr.readthedocs.org/ko/latest/en/patterns/caching.html?highlight=cache

http://werkzeug.pocoo.org/docs/0.9/contrib/cache/#werkzeug.contrib.cache.SimpleCache

2014/09/26 16:29 2014/09/26 16:29
Posted
Filed under 프로그래밍/Python
python 은 버전이 바뀌면 되던게 안되던가 있던게 없어지는 경우가 많다.

uwsgi-plugin-python 을 apt-get 으로 설치할수 있는데
이게 최신버전은 없다 (python 3.4기준)
뭐 이래저래 찾아본다.
네이년에서는 못찾겠다.
구글링으로 해외 사이트 찾아서 해결했다.
우리나라에서 파이썬 자료 찾기가 힘들다.

git clone https://github.com/unbit/uwsgi/


python3.4 uwsgiconfig.py --plugin plugins/python core python34
python34_plugin.so 이 생긴다.
cp python34_plugin.so /usr/lib/uwsgi/plugins/
복사해주고

실행할 uwsgi ini파일에 plugin 부분을 추가해준다.

[uwsgi]
plugin=/usr/lib/uwsgi/plugins/python34

uwsgi 실행시 오류가 나면 uwsgi 실행파일을 아에 복사해버린다.

python3.4 uwsgiconfig.py -b core

cp uwsgi /usr/bin/uwsgi

좀 짜증이 난다...
2014/09/26 14:57 2014/09/26 14:57
Posted
Filed under 프로그래밍/Python
upstream uwsgicluster {
     server 127.0.0.1:9001;
     server 192.168.100.101:9001;
     server 192.168.100.102:9001;
     server 192.168.100.103:9001;
     server 192.168.100.104:9001;
}

server {
    listen   80;
    server_name www.example.com example.com;
    access_log /srv/www/example.com/logs/access.log;
    error_log /srv/www/example.com/logs/error.log;

    location / {
        include        uwsgi_params;
        uwsgi_pass     uwsgicluster;
    }

    location /static {
        root   /srv/www/example.com/public_html/static/;
        index  index.html index.htm;
    }
}
2014/09/26 14:07 2014/09/26 14:07
Posted
Filed under 프로그래밍/Python
src/pycurl.h:4:20: fatal error: Python.h: No such file or directory

해당 오류 발생하면

apt-get install python3-dev

설치해주고

pip3 install pycurl

다시 해본다.




2014/09/24 19:02 2014/09/24 19:02
Posted
Filed under 프로그래밍/Python
if type(val) is dict:

if 'T' in obj:

if 'response' not in jsonData.keys():

if not token:

if token['userid'] is None:
2014/09/24 10:53 2014/09/24 10:53
Posted
Filed under 프로그래밍/Python
logger.debug("TEST END!")
logger.info("TEST END!")
logger.warning("TEST END!")
logger.error("TEST END!")
logger.critical("TEST END!")
2014/09/23 17:55 2014/09/23 17:55
Posted
Filed under 프로그래밍/Python
jsonData 라는 딕셔너리안에 reponse가 존재하는지

not in, in...이건 쉽다

if 'response' not in jsonData.keys():
2014/09/23 17:29 2014/09/23 17:29
Posted
Filed under 프로그래밍/Python
참 파이썬.....너무하네... 2에서 하던 except처리방법은 모두 오류 난다.

except pycurl.error as e:
  print(e)
2014/09/23 11:29 2014/09/23 11:29
Posted
Filed under 프로그래밍/Python
PHP로 개발하다가 python 할라니 참 불편해...
pymysql 이 처리해줘야할것 같은걸 개발자가 다 해줘야해?

PyMySQL
https://github.com/PyMySQL/PyMySQL

샘플
https://github.com/PyMySQL/PyMySQL/blob/master/example.py



# dict 형태로 row를 반환
cursor = db.cursor(pymysql.cursors.DictCursor)
cursor.execute("SELECT id, name FROM `table`")
rows=cursor.fetchall()


cursor.execute("SELECT id, name FROM `table`")
for i in xrange(cursor.rowcount):
    id, name = cursor.fetchone()
    print id, name



cursor.execute("SELECT id, name FROM `table`")
result = cursor.fetchmany()
while result:
    for id, name in result:
        print id, name
    result = cursor.fetchmany()



cursor.execute("SELECT id, name FROM `table`")
for id, name in cursor.fetchall():
    print id, name



import MySQLdb

conn = MySQLdb.connect(user="user", passwd="password", db="mydb")
cur = conn.cursor()
print "Executing query"
cur.execute("SELECT * FROM bigtable");


print "Starting loop"
row = cur.fetchone()
while row is not None:
    print ", ".join([str(c) for c in row])
    row = cur.fetchone()


cur.close()
conn.close()
2014/09/23 10:21 2014/09/23 10:21
Posted
Filed under 프로그래밍/Python
conn = pymysql.connect(
    host='localhost',
    user='user',
    passwd='passwd',
    db='db',
    autocommit=True
)


autocommit=True 하면 바로바로 들어간다.

아니면 따로 커밋해줘야해

conn.commit()


2014/09/23 10:19 2014/09/23 10:19
Posted
Filed under 프로그래밍/Python
이건 말이야...

python 3 에서는 range 로 바꼈어...

그래서 오류나는거야

쩝....

python 좀 너무한다..
2014/09/23 10:17 2014/09/23 10:17
Posted
Filed under 프로그래밍/Python
서버 환경변수

os 사용하려면 import os 해줘야함
os.environ['DEV_MODE']


웹서버 환경변수

request.META.get('DEV_MODE')
2014/09/16 19:07 2014/09/16 19:07