160x600
Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
Tags
- pandas
- 딥러닝
- Database
- SQL예제
- 회귀모델
- 데이터전처리
- python기초
- 해석
- 데이터
- 데이터 가공
- 훈련
- 크롤링(crawling)
- 알고리즘기초
- 예측
- 데이터 분석
- 데이터 수집
- MariaDB
- Deep Learning
- pythone
- keras
- 선형회기모델
- tensorflow
- 정확도
- HeidiSQL
- 데이터베이스
- sklearn
- 파이썬
- 머신러닝
- 시각화
- python
Archives
- Today
- Total
코딩헤딩
[데이터 분석] DB프로그램 예제(class 생성하여 조회/입력/수정 처리) 본문
728x90
<DB 프로그램 순서>
1. 데이터베이스 설정 정보 준비
2. DB 접속하기 : 커넥션(connect)
3. 커서 받아오기 : cursor()
4. 구문 작성하기 : sql(조회, 입력, 수정, 삭제) -- xx
5. 구문 실행하기 : execute() -> 결과값은 체크 --세모
6. 조회인 경우 커서에서 데이터 추출하기 -- 세모
-> 한건 : fetchone()
-> 여러건 : fetchall()
7. 조회결과 데이터프레임 또는 웹페이지에 출력 -- 세모
-> 데이터프레임 : pd.DataFrame(여러건), pd.DataFrame([한건])
8. 조회가 아닌경우 : 처리 결과 조건으로 확인하기 if "처리 성공" else "처리 실패" -- 세모
9. DB정보 반환하기
- 반환 순서 : cursor > connect
1. 클래스 생성
- 클래스 이름 : PowerClass
2. 클래스 내에 함수들 정의
3. 외부에서 조회/한건입력/수정/삭제 처리하기
* Class생성
class PowerClass :
### 생성자
# - DB접속정보 정의
def __init__(self) :
### 접속 정보
# - 접속 ID or 도메인
self.host = "localhost"
# - 사용자계정
self.user = "gjuser"
# - 패스워드
self.password = "dbdb"
# - 데이터베이스명
self.db = "gjdb"
# - 한글처리
self.charset = "utf8"
# - 조회시 컬럼명을 동시에 보여줄지 여부 설정
self.cursorclass = pymysql.cursors.DictCursor
# - 자동반영
self.autocommit = True
### DB 접속하기
self.initConnection()
### Cursor 생성하기
self.initCursor()
### DB 접속하기
# - 반환값 : connect
def initConnection(self) :
### DB 접속하기
try :
self.conn = pymysql.connect(host=self.host,
user=self.user,
password=self.password,
db=self.db,
charset=self.charset,
autocommit=self.autocommit,
cursorclass=self.cursorclass)
print("DB접속 성공 >>> ", self.conn)
except :
print("DB Server Checking...")
### 커서 생성하기
def initCursor(self) :
self.cur = self.conn.cursor()
print("커서 생성 성공 >>> ", self.cur)
### 구문 실행하기
def getExecute(self, sql) :
rs_cnt = self.cur.execute(sql)
return rs_cnt
### 조회-여러건 데이터프레임으로 변환하여 반환하기
def getSelectAll(self, sql) :
rs_cnt = self.getExecute(sql)
if rs_cnt > 0 :
rows = self.cur.fetchall()
rs_df = pd.DataFrame(rows)
else :
rs_df = False
return rs_df
### 조회-한건 데이터프레임으로 변환하여 반환하기
def getSelectOne(self, sql) :
rs_cnt = self.getExecute(sql)
if rs_cnt > 0 :
row = self.cur.fetchone()
rs_df = pd.DataFrame([row])
else :
rs_df = False
return rs_df
### DB 접속 정보 반환하기
def dbClose(self) :
try :
self.cur.close()
self.conn.close()
print("DB 접속을 종료합니다.")
except :
print("이미 DB 접속이 종료되어 있습니다.")
* 데이터 여러 건 조회하기
try :
### 클래스 생성하기
pClass = PowerClass()
### 조회-여러건
sql = """
SELECT mem_id, mem_name
FROM member
WHERE NOT EXISTS(SELECT cart_member From cart
WHERE cart_member = mem_id)
"""
### 여러건 데이터프레임으로 조회하기
rs_df = pClass.getSelectAll(sql)
except Exception as e:
print(f"오류발생 : {e}")
finally :
### DB정보 반환하기
pClass.dbClose()
### 사용된 클래스 소멸(삭제)시키기
del pClass
rs_df
결과 :
DB접속 성공 >>> <pymysql.connections.Connection object at 0x0000021BCA15FD00>
커서 생성 성공 >>> <pymysql.cursors.DictCursor object at 0x0000021BCA15F820>
DB 접속을 종료합니다.
* 데이터 한 건 조회하기
try :
### 클래스 생성하기
pClass = PowerClass()
### 조회-한건
sql = """
SELECT mem_id, mem_name
FROM member
WHERE mem_id = 'a001'
"""
### 한건 조회하기
rs_df = pClass.getSelectAll(sql)
rs_df = pClass.getSelectOne(sql)
except Exception as e:
print(f"오류발생 : {e}")
finally :
### DB정보 반환하기
pClass.dbClose()
### 사용된 클래스 소멸(삭제)시키기
del pClass
rs_df
결과 :
DB접속 성공 >>> <pymysql.connections.Connection object at 0x0000021BCA251280>
커서 생성 성공 >>> <pymysql.cursors.DictCursor object at 0x0000021BCA251340>
DB 접속을 종료합니다.
* 데이터 입력 조회하기
try :
### 클래스 생성하기
pClass = PowerClass()
### 입력을 위한 구문 생성하기
sql = """
Insert Into time_power_demand(
ymd, time, power
) Values (
'2020-12-31', '24시', 1234
)
"""
rs_cnt = pClass.getExecute(sql)
if rs_cnt > 0 :
print(f"{rs_cnt}건이 입력되었습니다.")
else :
print("입력되지 않았습니다.")
except Exception as e:
print(f"오류발생 : {e}")
finally :
### DB정보 반환하기
pClass.dbClose()
### 사용된 클래스 소멸(삭제)시키기
del pClass
결과 :
DB접속 성공 >>> <pymysql.connections.Connection object at 0x0000021BC9C15A00>
커서 생성 성공 >>> <pymysql.cursors.DictCursor object at 0x0000021BC87F1EE0>
1건이 입력되었습니다.
DB 접속을 종료합니다.
728x90
'데이터' 카테고리의 다른 글
[데이터 분석] 교통데이터 전처리 / 시각화 (막대그래프, Histplot) (2) | 2023.12.03 |
---|---|
[데이터 분석] 교통데이터 전처리 / 시각화 (Heatmap) (0) | 2023.12.01 |
[데이터 분석] 교통데이터 수집/가공 (2) | 2023.11.30 |
[데이터 분석] 데이터 조회하기 / 입력, 수정, 삭제 / 커서, 커넥션 (1) | 2023.11.29 |
[데이터 분석] 데이터 테이블에 저장하기 (0) | 2023.11.29 |