
■ 핵심 내용
고객으로부터 사진 편집을 요청하는 이메일이 왔다고 생각해보자,
· 정규표현식을 이용하여 ▶ 발신메일, 고객이름, 사용할 이미지, 원하는 기능, 추가 요청사항 데이터만 추출하고
· python을 oracle과 연동하여 ▶ 테이블로 고객관리를 하려고 한다!
SQL을 이용하면 추후 고객관리가 편리할 것으로 기대되기 때문이다!
(고객 이메일 예시)
■ 기능 구현 코드
정규표현식을 사용하려면 re 모듈을 import하여야 한다.
import re
고객1의 메일(txt 파일)에서 고객정보(발신메일, 고객이름, 사용할 이미지, 원하는 기능, 추가 요청사항)를 list로 추출한다!
f = open('C:/Users/Playdata/.spyder-py3/emailFromCustomer1.txt','r',encoding = 'utf-8')
customer1 = f.read()
char = re.compile(r'발신 :.+')
custEmail_1 = re.findall(char,customer1)
char2 = re.compile(r'고객이름 :.+')
custName_1 = re.findall(char2,customer1)
char3 = re.compile(r'사용할 이미지 :.+')
custImage_1 = re.findall(char3,customer1)
char4 = re.compile(r'원하는 기능 :.+')
custRequirement_1 = re.findall(char4,customer1)
char5 = re.compile(r'추가 요청사항 :.+')
custRemark_1 = re.findall(char5,customer1)
고객2의 메일(txt 파일)에서 고객정보(발신메일, 고객이름, 사용할 이미지, 원하는 기능, 추가 요청사항)를 list로 추출한다!
f = open('C:/Users/Playdata/.spyder-py3/emailFromCustomer2.txt','r',encoding = 'utf-8')
customer2 = f.read()
char = re.compile(r'발신 :.+')
custEmail_2 = re.findall(char,customer2)
char2 = re.compile(r'고객이름 :.+')
custName_2 = re.findall(char2,customer2)
char3 = re.compile(r'사용할 이미지 :.+')
custImage_2 = re.findall(char3,customer2)
char4 = re.compile(r'원하는 기능 :.+')
custRequirement_2 = re.findall(char4,customer2)
char5 = re.compile(r'추가 요청사항 :.+')
custRemark_2 = re.findall(char5,customer2)
고객 1과 고객 2의 List 요소들을 합친다!
custEmails = custEmail_1 + custEmail_2
custNames = custName_1 + custName_2
custImages = custImage_1 + custImage_2
custRequirements = custRequirement_1 + custRequirement_2
custRemarks = custRemark_1 + custRemark_2
만들어진 리스트들로 딕셔너리 변수로 저장하고, 데이터프레임화한다!
import pandas as pd
data = {'custEmails':custEmails,
'custNames':custNames,
'custImages':custImages,
'custRequirements':custRequirements,
'custRemarks':custRemarks
}
#DataFrame은 딕셔너리 변수를 2차원 테이블로 만들어준다! (우리가 보는 표 형식!)
df = pd.DataFrame(data)
아래는 내 클라우드 서버의 user 정보이다. user로 oracle에 접속하는 코드이다.
#python에서 oracle에 접속하기!
import cx_Oracle
#initialized 시킴
cx_Oracle.init_oracle_client(lib_dir=r"C:\oracle\instantclient_19_11")
#Oracle에 접속
connection = cx_Oracle.connect(user='ora01', password='****', dsn='edudb_high')
cursor = connection.cursor()
oracle에 접속하고나면 cust라는 고객관리 테이블을 생성하고, 컬럼을 추가한다!
컬럼에 df값을 List화시킨 후, insert한다!
#테이블 생성하고 데이터 집어넣기
cursor.execute('''drop table cust purge''')
cursor.execute('''create table cust (custemail varchar2(30)
, custname varchar2(100)
, custimage varchar2(100)
, custrequirement varchar2(100)
, custremark varchar2(100))''')
test_list = df.values.tolist()
cursor.executemany("insert into cust(custemail,custname,custimage,custrequirement,custremark) values (:1, :2, :3, :4, :5)", test_list)
connection.commit()
■ 추후 추가되어야 하는 기능
고객은 계속 요청이 올텐데, 그때마다 일일이 txt파일에서 list를 추출하는 과정의 코드를 적을 순 없다!
따라서, 고객 이메일에서 정보들을 추출하는 과정을 for문으로 구현해야 한다.
'Python' 카테고리의 다른 글
[Python] [Mini PJT] OpenCV로 이미지에 텍스트 합성하기 (0) | 2021.07.22 |
---|---|
[Python][TIL] 데이터 분석에 활용 - numpy & pandas (0) | 2021.07.22 |
[Python][TIL] 정규 표현식(regular expression), DB 구축 (0) | 2021.07.19 |
[Python][Daily Study] 함수, if문, for문 (0) | 2021.07.16 |
[Python][TIL] 기본문법 (0) | 2021.07.13 |