코랩은 기존 프레임워크에서 실행문을 위에 쓰고 함수를 아래 쓰는 방식과 다르게
함수가 위에 있고 실행문이 아래에 있어야 한다.
먼저 필요한 라이브러리들을 import 한다.
로깅은 소프트웨어를 실행할 때 발생하는 이벤트를 기록하고 추적하기 위해 사용한다.
로그를 찍어줄 로거를 생성하고 config 설정에서 로그 중요도 수준(level)을 설정할 수 있다.
보통은 level=DEBUG를 사용하지만 여기서는 print 찍듯이 로그만 보고 모든 실행 현황을 파악할 수 있도록 info 수준까지 찍어주려고 한다.
코랩에서는 지나간 로그를 보기가 까다로워서 파일로 저장해준 후 덮어쓰기인 filemode='a'로 해준다.
자세한 설정은 아래 설명을 참고한다.
level | 설명 |
DEBUG | 상세한 정보. 보통 문제를 진단할 때만 필요합니다. |
INFO | 예상대로 작동하는지에 대한 확인. |
WARNING | 예상치 못한 일이 발생했거나 가까운 미래에 발생할 문제(예를 들어 〈디스크 공간 부족〉)에 대한 표시. 소프트웨어는 여전히 예상대로 작동합니다. |
ERROR | 더욱 심각한 문제로 인해, 소프트웨어가 일부 기능을 수행하지 못했습니다. |
CRITICAL | 심각한 에러. 프로그램 자체가 계속 실행되지 않을 수 있음을 나타냅니다. |
그 후 변수를 생성해 값을 설정해준다,
import os, sys
import sqlite3
import traceback
import logging
logger = logging.getLogger('wpg_logger')
logging.basicConfig(encoding='utf-8', level=logging.INFO, format='%(levelname)s:%(name)s:%(asctime)s:%(message)s', filename='./logger.log', filemode='a')
logger.info('[Start]')
# 현재 경로 확인
# path=os.getcwd()
# print(path)
rootPath="./"
sqlDir="/sql"
attachDir="/attachment"
dbFileName="wpg_file.db"
DB 접속 후 테이블을 생성하는 함수를 작성한다.
logger.info('[createDB]')
## DB 접속 및 테이블 생성
def createDB(sqlDirPath):
dbFilePath = sqlDirPath + "/" + dbFileName
logger.info('[createDB]dbFilePath: ' + dbFilePath)
# DB 접속 및 생성
conn = sqlite3.connect(dbFilePath, isolation_level=None)
logger.info('[createDB] conn success')
# SQL 테이블 생성문
createWpgSql = "CREATE TABLE IF NOT EXISTS wpgFile ([id] INTEGER PRIMARY KEY AUTOINCREMENT, [title] TEXT, [auth] TEXT, [reg_dt] DATETIME, [filePath] TEXT)"
logger.info('[createDB]createWpgSql: ' + createWpgSql)
# 테이블 생성
try:
cur = conn.cursor()
logger.info('[createDB] cur success')
cur.execute(createWpgSql)
logger.info('[createDB] execute completed')
except sqlite3.Error as e:
logger.error('[sqlite3.Error] SQLite error: %s' % (' '.join(e.args)))
logger.error('[sqlite3.Error] Exception class is: ' + e.__class__)
logger.error('[sqlite3.Error] SQLite traceback: ')
exc_type, exc_value, exc_tb = sys.exc_info()
logger.error('[sqlite3.Error] '+ traceback.format_exception(exc_type, exc_value, exc_tb))
폴더가 원하는 위치에 있는지 확인한 후 있으면 DB 접속하는 함수를 부르고
없으면 폴더를 만들고 나서 DB접속하는 함수를 부른다.
logger.info('[makeDir]')
# 폴더 체크 후 없으면 생성
def makeDir(rootPath, sqlDir):
# root 경로에 원하는 폴더 이름 합치기
sqlDirPath = rootPath + "/" + sqlDir
# sqlDirPath에 폴더가 있는지 확인
if os.path.exists(sqlDirPath):
logger.info('[makeDir] exists sqlDirPath : '+ sqlDirPath)
# 폴더가 있는 것이 확인되면 파일 체크
createDB(sqlDirPath)
else:
# folderPath에 원하는 폴더가 없으면 생성 시도
try:
os.makedirs(sqlDirPath)
logger.info('[makeDir] makedirs success : ' + sqlDirPath)
# 폴더를 만들고 파일 생성
createDB(sqlDirPath)
except OSError:
logger.info('[makeDir] Error: Creating directory. ' + sqlDirPath)
print('Error: Creating directory. ' + sqlDirPath)
마지막으로 파일 생성 함수를 실행하는 로직을 실행시켜준다.
################################
# logic
logger.info('[logic]logic start')
# 파일 생성
makeDir(rootPath, sqlDir)
성공하면
아래처럼 폴더와 파일이 생성된다
그리고 logger.log를 열어보면 아래처럼 생성되어있다.
INFO:wpg_logger:2022-03-15 10:40:01,526:[Start]
INFO:wpg_logger:2022-03-15 10:40:03,021:[createDB]
INFO:wpg_logger:2022-03-15 10:40:04,855:[makeDir]
INFO:wpg_logger:2022-03-15 10:40:06,879:[logic]logic start
INFO:wpg_logger:2022-03-15 10:40:06,879:[makeDir] exists sqlDirPath : .///sql
INFO:wpg_logger:2022-03-15 10:40:06,879:[createDB]dbFilePath: .///sql/wpg_file.db
INFO:wpg_logger:2022-03-15 10:40:06,879:[createDB]conn success
INFO:wpg_logger:2022-03-15 10:40:06,880:[createDB]createWpgSql: CREATE TABLE IF NOT EXISTS wpgFile ([id] INTEGER PRIMARY KEY AUTOINCREMENT, [title] TEXT, [auth] TEXT, [reg_dt] DATETIME, [filePath] TEXT)
INFO:wpg_logger:2022-03-15 10:40:06,880:[createDB] cur success
INFO:wpg_logger:2022-03-15 10:40:06,880:[createDB] execute completed
sql/***_file.db 를 열어보면 이렇게 생겼다. 하지만 select는 잘된다.
반응형
'Programming > Python' 카테고리의 다른 글
[Python] colab에서 python으로 url 날려서 파일 다운로드 크롤링 하기 (0) | 2022.03.17 |
---|---|
[Python] 코랩과 파이썬을 이용해 구글 드라이브에 폴더 만들고 파일 쌓고 불러오기 (0) | 2022.03.17 |
[Python] 크롤링 돌리면서 생긴 에러 (0) | 2022.03.16 |
[Python] 파이썬의 기초 (0) | 2022.03.12 |
[Python] 출력 (0) | 2022.03.07 |
댓글