개발 공부/파이썬 17

[파이썬] 오라클 DB에 execute를 사용해서 1차원 List 데이터를 INSERT

[파이썬] 오라클 executemany로 2차원 리스트 데이터를 DB에 넣기 [파이썬] 오라클 executemany로 2차원 리스트 데이터를 DB에 넣기 [파이썬] 오라클 연결하기 [파이썬] 오라클 연결하기 우선 DBeaver 툴을 사용해서 오라클로 스키마를 생성한 후에 아래 코드를 실행하면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import cx_Oracle # DBeave hansol94.tistory.com INSERT 쿼리문을 수정해서 사용하면 된다. execute 함수는 2번째 인자로 1차원 리스트를 넣어야 한다. 데이터가 많으면(행의 수가 많으면) execute로 for문을 여러 번 돌려야 하기 때문에 오래 걸린다. 그래서 한 번에 데이터를 많이..

[파이썬] 오라클 DB에 executemany로 데이터를 분할해서 INSERT

[파이썬] 오라클 executemany로 2차원 리스트 데이터를 DB에 넣기 [파이썬] 오라클 executemany로 2차원 리스트 데이터를 DB에 넣기 [파이썬] 오라클 연결하기 [파이썬] 오라클 연결하기 우선 DBeaver 툴을 사용해서 오라클로 스키마를 생성한 후에 아래 코드를 실행하면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import cx_Oracle # DBeave hansol94.tistory.com csv 데이터를 오라클 DB에 INSERT 할 때 한 번에 5만개 이상을 넣으려고 하면 에러가 나기 때문에 executemany의 인자로 넣는 2차원 리스트에 있는 1차원 리스트 수를 5만개 이하로 해서 executemany를 여러 번 실행하는 방..

[파이썬] csv 파일 가져와서 데이터를 리스트에 담기

파이썬에서 csv에 있는 데이터를 사용하려면 csv 파일에 있는 데이터를 우선 2차원 리스트로 담는 것이 편하다. 다음과 같이 코드를 구성하면 간단하게 데이터를 가져올 수 있다. 5번 행의 open 함수 부분에서 1번째 인자로 csv 파일 경로명과 2번째 인자인 인코딩 방식만 변경해주고 나머지는 그대로 써도 된다. 7번 행은 csv 파일에서 1번째 행인 컬럼 명들을 제외시키고 2번째 행부터 데이터들을 가져올 수 있다. 컬럼 명들도 포함시키고 싶으면 7번 행을 주석 처리 하면 된다. 파일을 다 사용했으면 항상 close() 함수로 파일을 닫아야 한다. 그렇지 않으면 다른 코드에서 똑같은 파일을 사용할 경우 에러가 날 수 있기 때문이다. 비슷한 예를 들면 우리가 평소에 한글이나 엑셀 파일을 실행한 상태로 그..

[파이썬] 오라클 DB에 execute()로 SELECT, INSERT, DELETE 실행하기

INSERT 쿼리문을 수정해서 사용하면 된다. INSERT문 VALUES 에는 왼쪽 그림처럼 컬럼 수만큼 :숫자 형식으로 넣어야 한다. execute 함수는 2번째 인자로 1차원 리스트를 넣어야 한다. 데이터가 많으면 executemany 함수로 2차원 리스트를 넣는 방식이 있다. DBeaver로 오라클을 연결해서 TEST 테이블을 미리 만들었다. SELECT 쿼리문을 수정해서 사용하면 된다. SELECT문 실행 후에 fetchall 함수를 실행해서 데이터를 가져온다. * 참고사항 2차원은 리스트로 되어 있고 1차원은 튜플로 되어 있다. DELETE문 사용법

[파이썬] 오라클 executemany로 2차원 리스트 데이터를 DB에 넣기

[파이썬] 오라클 연결하기 [파이썬] 오라클 연결하기 우선 DBeaver 툴을 사용해서 오라클로 스키마를 생성한 후에 아래 코드를 실행하면 된다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import cx_Oracle # DBeaver 기준으로 'user명/비밀번호@ip주소:port번호/Service Name( hansol94.tistory.com 오라클을 연결해서 csv 파일에 있는 데이터를 리스트에 담아서 INSERT문으로 데이터를 넣으려는 작업을 하는데, execute를 사용해서 하려고 하니 csv 파일의 데이터 행의 수가 적을 때는 상관이 없었는데 몇 천,만 줄이 되면 for문 돌리는 횟수도 이에 비례하니 오래 걸렸다. 비효율적인거 같아서 찾아보니 2차원 리..

[파이썬] 오라클 DB 연결하고 cursor 얻기

우선 DBeaver 툴을 사용해서 오라클로 스키마를 생성한 후에 아래 코드를 실행하면 된다. connect로 DB를 연결하면 cursor 객체를 얻을 수 있다. 항상 커서를 얻거나 DB를 연결했으면 마지막에 close로 닫아줘야 한다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 import cx_Oracle # DBeaver 기준으로 'user명/비밀번호@ip주소:port번호/Service Name(=DB명) db_connect = 'KOSMES_API/1234@localhost:1521/XE' conn_str = db_connect # 오라클 DB 연결 정보 conn = None curs = None try: conn = cx_Oracle.connect(conn_s..

[파이썬] 다른 폴더에 있는 파일 import 해서 사용하기

다른 폴더나 같은 폴더에 있는 파일을 import해서 변수를 사용하는 방법이다. 이걸 활용하면 폴더 경로명 같은 것을 작성한 설정 파일을 생성해서 import 하는 방식으로 활용할 수 있다. 우선 같은 폴더에 있는 경우는 간단하게 import만 하면 된다. import 파일명 만 하면 변수 이름 앞에 파일명을 붙여서 파일명.변수명 이런 식으로 사용해야 한다. 변수명만 써서 바로 사용하고 싶으면 아래 2번째 그림처럼 코드를 작성하면 된다. 다른 폴더에 있는 파일을 import 하는 경우는 추가해야 하는 코드가 있다. 이번에는 test 파일을 config 폴더에 옮겨서 진행. test에서 test2 파일을 import 하려면 상위 폴더의 경로가 필요.

[파이썬] 날짜 함수 strptime, strftime, relativedelta 활용해서 다음 년도, 월, 일 구하기

프로젝트 하면서 날짜를 활용해서 코드를 작성해야 하는 경우가 있었는데, 날짜 함수를 사용하지 않고 코드를 작성하는 경우에 윤년의 경우나 달의 마지막 일자 다음 날짜인 경우 등도 처리 해야 하기 때문에 코드가 길어졌었다. 그래서 비효율적인거 같아서 날짜 함수를 사용하니 간단하게 해결됐다. 3가지의 경우를 코드로 예시를 들어봤는데, (주석) 년도는 특정 년도의 다음 년도를 구하는 코드고, 년월은 해당 년도의 마지막 달인 12월일 때 다음 월이면 년도도 같이 변경되는 경우다. 그리고 마지막으로 해당 년도의 12월 31일에서 다음 일자는 년도 월까지 다 변경되는 경우를 구하는 코드이다. 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 from datetime im..

[파이썬] 폴더에 원하는 파일명을 가진 파일 찾기

폴더에 원하는 파일을 가져와서 사용하고 싶을때 활용할 수 있는 코드이다. 우선 os.listdir()을 활용해서 폴더에 있는 파일들을 리스트로 저장한 다음에 특정 파일명이 포함되어 있으면 리스트로 저장하는 코드로 해결했다. 실행 결과로 test.py, readCsv.py가 출력되는 것을 확인했다. 복붙 코드 1 2 3 4 5 6 7 8 import os.path files_list = os.listdir('./') # 폴더에 있는 파일들을 리스트로 저장 # 파일명에 test 라는 이름이 포함된 파일이 있으면 저장 file_name = [s for s in files_list if "test" in s] # 파일명에 read 라는 이름이 포함된 파일이 있으면 저장 file_name = [s for s in..

[파이썬] 폴더(디렉토리)에 있는 파일들을 리스트(List)로 저장

폴더에 있는 파일들을 리스트로 저장하는 방법이다. listdir() 함수 인자로 폴더 경로를 넣으면 해당 폴더에 있는 파일명들을 리스트로 저장한다. ./ 는 상대경로인데 vscode는 폴더 열기로 선택한 폴더를 현재 위치로 인식한다. 즉, 바로 아래 그림 왼쪽에 표시된 것처럼 현재 내가 PYTHON이라는 폴더를 열어서 작업을 하고 있기 때문에 현재 위치는 PYTHON이라는 폴더이다. 그래서 ./ 는 PYTHON 폴더라는 의미이다.