일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- graphtheory
- QGIS
- digitalgeography
- 그래프색상
- postgres
- 도시계획
- 베이지안뉴럴네트워크
- platformurbanism
- 네이버
- 공간분석
- connectivity
- 도시인공지능
- 그래프이론
- 핫플레이스
- digital geography
- 파이썬
- 공간데이터
- 베이지안
- spacesyntax
- naver
- 서울
- 스마트시티
- SQL
- pandas
- 웹크롤링
- 도시공간분석
- 서울데이터
- Python
- 도시설계
- multinomiallogitregression
- Today
- Total
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- graphtheory
- QGIS
- digitalgeography
- 그래프색상
- postgres
- 도시계획
- 베이지안뉴럴네트워크
- platformurbanism
- 네이버
- 공간분석
- connectivity
- 도시인공지능
- 그래프이론
- 핫플레이스
- digital geography
- 파이썬
- 공간데이터
- 베이지안
- spacesyntax
- naver
- 서울
- 스마트시티
- SQL
- pandas
- 웹크롤링
- 도시공간분석
- 서울데이터
- Python
- 도시설계
- multinomiallogitregression
- Today
- Total
이언배 연구노트
[Python + PostGRES] CSV 파일을 데이터베이스로 본문
Task:
CSV 파일을 파이썬으로 읽어 PostGRES 데이터베이스로 만들어보자.
CSV 를 데이터베이스로 옮기는 일은 매우 귀찮다.
사실 PostGRES 에서 테이블을 만든 후, Import 기능을 활용하는 것이 가장 쉽긴 하지만,
안타깝게도 이것을 위해서는 우선 테이블을 생성해야 한다는 번거로움이 있다.
열어보고 싶지 않은 파일을 데이터베이스화 하려고 하는 건데,
데이터베이스 내부에서 테이블을 생성하기 위해
파일을 열어봐야하는 이 아이러니 함.
귀찮을 때에는 파이썬한테 시키는 게 제일 좋다.
1. Connect 생성
지금껏 파이썬+PostGRES 호환을 위해 psycopg2 모듈을 믿어왔건만,
Pandas 는 sqlalchemy 에서 더욱 호환이 잘된다고 한다.
그리고 1.4.16 버젼 이상에서 호환이 더 잘되는 것 같으니, 우선 적절한 버젼의 sqlalchemy 모듈을 설치해주자.
pip install sqlalchemy==1.4.16
sqlalchemy 모듈은
데이터베이스와의 연결 Instance 를 생성해, 해당 connection 을 바탕으로
파이썬과 데이터베이스를 연동해준다.
해당 connect (여기서는 engine) 을 만들기 위한 코드는 아래와 같다.
from sqlalchemy import create_engine
account_identifier = 'your host' ## 나는 여기에 IP 주소를 입력했더니 통과되었다. localhost도 될듯
user = 'ID' ## Database 생성 시에 사용했던 ID 를 넣자
password = '****' ##본인의 패스워드도 넣자
DB_name = 'DBDB' ##접속하고자 하는 DB의 이름을 넣자
conn_string = f"postgresql://{user}:{password}@{account_identifier}/{DB_name}"
engine = create_engine(conn_string) ## 위 작성된 string 을 바탕으로 connection 을 위한 instance 를 만들었다.
복잡해보이지만, 결국 컴퓨터의 주소랑 DB 접속을 위한 아이디, 비밀번호를 치면 connection 을 만든다는 것.
2. Dataframe 전송
Dataframe 을 곧바로 Database로 변환시키는 to.sql() 코드가 있다!
고맙다 Pandas 야!!
import pandas as pd
df = pd.read_csv('path+filename.csv', encoding = 'utf8') #짧은 식견으로 보았을 때, 한국인의 postgres는 utf8이 가장 안전하다
df.to_sql('TableName', con = engine, chunksize = 1000) # 아까 만든 engine 을 바탕으로, 지정한 테이블 이름대로 데이터프레임을 DB로 만든다.
#이 때, 한방에 다 옮기면 컴퓨터의 데이터 전송용량 등에 이슈가 생길 수 있으니 쫌쫌따리로 1000씩 옮기겠다.
사실 테이블 생성 없이는 불가능하다고 생각해서 시작한 게시글이었는데, to_sql 덕분에 살았다.
'Python' 카테고리의 다른 글
[Python] SHAP value 의 시각화 (1) | 2024.12.15 |
---|---|
[Python] Classification 모델들 (0) | 2024.12.11 |
[Python] ANOVA F-Test, Multinomial Logit Regression (3) | 2024.12.10 |
[Python] NAVER API로 음식점 상세 정보 검색하기 (0) | 2024.10.15 |
[Python+SQL] 도로 geometry 로 네트워크 분석하기 (0) | 2024.04.11 |