-
15주차 화 1128(테이블 저장하기)광주인력개발원 일일포스팅(메모장) 2023. 11. 28. 16:56728x90반응형
file_path = "./01_data/new_data.csv" df = pd.read_csv(file_path) df 년도 시간 전력량 0 2021-01-01 1시 64942 1 2021-01-01 2시 62593 2 2021-01-01 3시 60905 3 2021-01-01 4시 59889 4 2021-01-01 5시 59638 ... ... ... ... 8755 2021-12-31 20시 72976 8756 2021-12-31 21시 71602 8757 2021-12-31 22시 69383 8758 2021-12-31 23시 68874 8759 2021-12-31 24시 70123 8760 rows × 3 columns
""" <테이블 설계하기> - 테이블명, 컬럼명, 컬럼타입, null 여부에 대한 정의가 필요함 (산출물) - 테이블정의서 - ERD - 스크립트명세서 """
""" <데이터 저장시에 유용한 라이브러리> - sqlalchemy - 설치 : pip install sqlalchemy <데이터 조회시에 유용한 라이브러리> - pymysql - 설치 : conda install -c conda-forge pymysql - 설치 : pip install pymysql """ from sqlalchemy import create_engine import pymysql
DB 연결하기 ### 연결정보 작성 db_connection_info = "mysql+pymysql://gjuser:dbdb@localhost:3306/gjdb" ### Database 컨넥션(연결)하기 db_connection = create_engine(db_connection_info) db_connection Engine(mysql+pymysql://gjuser:***@localhost:3306/gjdb)
데이터프레임을 Table에 저장시키기 ### 데이터프레임의 컬럼명을 테이블의 컬럼명과 같게 수정 # - 데이터프레임의 컬럼명 수정하기 df.columns = ["ymd", "time", "power"] df # - 특정 컬럼명만 수정하고자 할때 # - df.columns = [{"년도" : "ymd"}] ymd time power 0 2021-01-01 1시 64942 1 2021-01-01 2시 62593 2 2021-01-01 3시 60905 3 2021-01-01 4시 59889 4 2021-01-01 5시 59638 ... ... ... ... 8755 2021-12-31 20시 72976 8756 2021-12-31 21시 71602 8757 2021-12-31 22시 69383 8758 2021-12-31 23시 68874 8759 2021-12-31 24시 70123 8760 rows × 3 columns
### 데이터 저장하기 # - name : 테이블 명 # - con : DB접속정보 # - index : 데이터프레임의 인덱스값을 포함할지 여부(True 포함, False 미포함) # - if_exists # * append : 데이터를 기존 테이블에 추가 # * fail : 아무 동작 하지 않기 # * replace : 동일한 테이블이 존재하면 기존 데이터를 삭제하고 새로운 데이터로 저장 df.to_sql(name="time_power_demand", con=db_connection, index=False, if_exists="append") 8760
데이터베이스 자원 반환(접속 끊기) ### 연결 종료하기 db_connection.dispose()
데이터 조회하기 - 조회시에는 pymysql 라이브러리 사용 <데이터베이스 연결> ### 접속 정보 # - 접속 ID or 도메인 host = "localhost" # - 사용자계정 user = "gjuser" # - 패스워드 password = "dbdb" # - 데이터베이스명 db = "gjdb" #- 한글처리 charset = "utf8" #- 조회시 컬럼명을 동시에 보여줄지 여부 설정 cursorclass = pymysql.cursors.DictCursor # - 자동반영 autocommit = True
### DB 접속하기 try : conn = pymysql.connect(host=host, user=user, password=password, db=db, charset=charset, autocommit=autocommit, cursorclass=cursorclass) print("DB접속 성공 >>> ", conn) except : print("DB Server Checking...") DB접속 성공 >>> <pymysql.connections.Connection object at 0x000002B14183D7D0>
### 커서 받아오기 cur = conn.cursor() cur <pymysql.cursors.DictCursor at 0x2b139188850>
### Select 문 생성 후 DB에게 요청 및 응답 받기 sql = " Select * From time_power_demand " rs_cnt = cur.execute(sql) print(f"{rs_cnt}건이 조회 되었습니다.") 8760건이 조회 되었습니다.
반납해주기~
try : cur.close() conn.close() except: print("이미 모든 커서와 접속정보가 반납되었습니다.")
728x90반응형'광주인력개발원 일일포스팅(메모장)' 카테고리의 다른 글
15주차 수 1129(교통 데이터_수집_가공 1) (1) 2023.11.29 15주차 수 1129( 테이블_ 저장하기 2) (0) 2023.11.29 15주차 화 1128(데이터_수집하기) (4) 2023.11.28 15주차 화 1128 (데이터_전처리기초) (4) 2023.11.28 14주차 금 1124(데이터 분석, 조인관련..) (2) 2023.11.24