본문 바로가기

Language

파이썬 cx_Oracle에서 한글 쿼리 전송 방법 파이썬에서 오라클을 다루기 위해서 주로 cx_Oracle 라이브러리를 많이 사용합니다.그리고 쿼리를 전달할 때 where 절에 한글이 들어가야 하는 경우도 있는데,그냥 전달할 경우 한글을 인식하지 못해 제대로 된 결과 값이 안 나오는 경우가 있습니다. # -*- coding: utf-8 -*-import cx_Oracledb = cx_Oracle.connect(DB접속 정보)cursor = db.cursor()SELECT * FROM table_name WHERE title like '%한글제목%' 위와 같이 쿼리를 전달할 경우 제대로 된 결과값이 안 나옵니다.아래 처럼 utf-8로 decode 된 값으로 전달을 해줘야 제대로 출력되는 것을 볼 수 있습니다. # -*- coding: utf-8 -*-im.. 더보기
python list 중복제거 python에서 리스트는 여러모로 많이 쓰입니다.보통 리스트에 저장된 모든 값들을 출력을 많이 하는데 중복된 값이 있다면 필요가 없겠죠. 이때 set함수를 사용합니다.set함수는 집합과 관련된 함수로 중복제거에 사용 시 아래와 같이 사용하면 됩니다. list1 = ['1', '3', '5', '2', '4', '1', '5'] print list(set(list1)) 하지만 set함수는 위에서 보시는 것처럼 '순서와 상관없이' 중복만 제거 합니다. 만약 순서를 유지하면서 출력을 하고 싶다면 아래 코드를 이용하시면 됩니다. from collections import OrderedDict list2 = ['1', '2', '3', '4', '5', '3', '5']print list(OrderedDict.f.. 더보기
python requests unicode 출력 문제 예전에는 파이썬에서 웹을 다룰 때 urllib, urllib2, beautifulsoup를 많이 사용했습니다.알려진 웹 관련 라이브러리래봐야 저 정도가 전부였기도 하고... 요즘엔 requests라는 라이브러리를 많이 사용하고 실제로 써보니 확실히 많이 편하구요.처음 requests를 사용한건 IP 조회 코드가 필요해서 쓰게 됬는데, 그 이후로 웹 관련 코드 작성할 때는 requests만 쓰고 있습니다. 다만 이 라이브러리에서의 문제는 간혹 한글이 깨져서 출력되는 경우가 있다는 것...웹 페이지 인코딩 설정에 따라 다른 것 같은데 req.text로 결과값을 가져올 경우 한글이 깨지는 경우가 발생합니다. 문제 해결은 간단하게 해결했는데.. req.content로 결과값을 출력시켜주면 됩니다.원인은 req... 더보기
python send mail - 간단한 메일 전송 프로그램 python send mail - 메일 전송 프로그램 이 프로그램이 필요하다고 생각된건 인터넷을 기가랜으로 바꾸기 전에는 집에 공인 IP 한 개만 들어와서 공유기가 꺼지지 않는 이상은 상관없었는데, 기가랜 모뎀이 생기면서 연결되는 PC, IPTV, VoIP, 무선공유기, Rasberry PI까지.. 모든 장치가 공인 IP를 받아온다. 문제는 PC나 Rasberry PI가 부팅 시마다 IP가 바뀌니 원격에서 붙기가 어려웠고, IP를 메일로 보내주는 프로그램을 생각했다.다행히 윈도우 기반인 PC와 Linux 기반인 Rasberry PI 둘 다 Python이 먹히니 귀찮음은 덜었다. 우선, 메일을 보내기 위해서는 SMTP(Simple Mail Transfer Protocol) Server가 필요한데, 인터넷에.. 더보기
python raw_input() 개행없이 문자열 입력 받기 python raw_input() 개행 없이 문자열 입력 받는 방법 python에서 raw_input()으로 입력을 받을 때 여러 줄을 복사, 붙여넣기 할 경우 아래와 같은 문제가 발생합니다. string = raw_input()=====입력 string1string2string3 =====출력string1입력은 여러 줄을 받았으나 string1 뒤의 \n으로 인해 변수에 한 줄만 입력되게 됩니다.흔히 생각할 때는 string변수에 'string1\nstring2\nstring3\n'으로 입력될 것 같지만 python에서 \n를 엔터로 입력받아버려 이런 문제가 발생합니다. 이를 해결하기 위해서는 2가지 방법이 있습니다. 1. import sys2. 반복문을 사용한 raw_input() 1번의 경우 아래와.. 더보기
python continue와 pass의 차이점 Python에서 continue와 pass의 차이점 우선 continue는 for문, if문 같은 곳에서 사용 시 다음 루프로 넘기는 역할을 합니다.pass는 아무 역할 없이 단순히 코드 진행을 하게 됩니다. 아래 코드를 실행해보면 좀 더 이해가 쉽습니다. for x in range(1, 6): if x: print "x is %d" % x pass print "Pass" for y in range(1, 6): print "continue_before" if y: print "y is %d" % y continue print "continue_after" 그리고 아래 결과는 아래와 같습니다. x is 1Passx is 2Passx is 3Passx is 4Passx is 5Passcontinue_befo.. 더보기
Python os makedirs 사용 경로 생성 이전 포스팅([Language/Python] - Python shutil copytree 사용 파일 복사)에서는 shutil을 이용하여경로 중간의 폴더가 없더라도 생성해가며 해당 경로로 파일을 복사하는 방법이었습니다. 이번 방법은 파일 복사가 아닌 중간 경로의 폴더가 존재하지 않더라도 생성해가면서 경로를 완성하는 방법입니다.예를 들어 os.mkdir로 C:\test\test1\test2\test3라는 경로가 필요한데 test1, test2라는 중간 경로의 폴더가 없다면, 'WindowsError: [Error 3] : '경로''에러가 발생합니다. 이 경우 os.makedirs()를 사용한다면, 경로를 따라가면서 폴더를 생성하게 됩니다. 사용 라이브러리 : os > makedirs import os os... 더보기
Python shutil copytree 사용 파일 복사 가끔 파일 복사를 해야할 때 C:\test에 있는 모든 파일을 D:\copy\copy1\copy2로 옮기고 싶은데 \copy\copy1\copy2의 경로가 없을 때가 있습니다.즉, 폴더가 없다면 생성해가면서 지정된 위치로 파일을 복사하는 방법입니다. 사용 라이브러리 : shutil > copytree import shutil shutil.copytree(src, dst, symlink=False, ignore=None) 예제 : import shutil shutil.copytree('C:\\srcfolder', 'D:\\dstfolder\\folder1\\folder2\\folder3') 결과 : 텍스트로 출력되는 결과가 아니라 제대로 보여드리긴 어렵지만 위 처럼 folder1,2,3이 순차적으로 생성되.. 더보기