Google Bigquery & pymysql
Google Bigquery
-
DB의 위치에 제한적이지 않은 GCP의 Bigquery를 이용한 python DB활용을 해 보고자 함
- 준비 단계
- 가상 환경 생성
- 나의 경우엔 굳이 가상 환경까지 이용할 필요가 없어 적용하지 않았으나, 필요하다면 하단 링크 참조
Google Cloud virtualenv
- 나의 경우엔 굳이 가상 환경까지 이용할 필요가 없어 적용하지 않았으나, 필요하다면 하단 링크 참조
- 패키지 설치
pip install google-cloud-bigquery
- GCP 서비스 계정 키 만들기
- GCP Console에서 서비스 계정 키 만들기 페이지로 이동
- 서비스 계정 목록에서 새 서비스 계정을 선택
- 서비스 계정 이름 필드에 이름을 입력
- 역할 목록에서 프로젝트 > 소유자를 선택
- 만들기를 클릭, 컴퓨터에 키가 포함된 JSON파일 다운로드 됨
- 환경 변수 설정하요 사용자 인증 정보 제공
- Windows PowerShell
$env:GOOGLE_APPLICATION_CREDENTIALS="[PATH]"
set GOOGLE_APPLICATION_CREDENTIALS=[PATH]
[PATH] == 다운로드 된 JSON파일의 경로 : 예시)D:/bigquerytest-c642.json
- Windows PowerShell
- 가상 환경 생성
- Python 에서 Bigquery 시작하기
from google.cloud import bigquery client = bigquery.Client.from_service_account_json('[PATH]', project='[GCP Project Name]') QUERY = ('SELECT * FROM `[GCP Project Name]` LIMIT 1000') query_job = client.query(QUERY) rows = query_job.result() for row in rows: print(row)
- 출력 결과
Row(('이순신', 40), {'name': 0, 'age': 1}) Row(('홍길동', 30), {'name': 0, 'age': 1}) Row(('유관순', 28), {'name': 0, 'age': 1})
- data row 추가
QUERY = ('INSERT INTO `[GCP Project Name]` VALUES ("유재석", 48)') query_job = client.query(QUERY) # API request rows = query_job.result()
- 다시 select로 출력한 결과
Row(('이순신', 40), {'name': 0, 'age': 1}) Row(('홍길동', 30), {'name': 0, 'age': 1}) Row(('유재석', 48), {'name': 0, 'age': 1}) Row(('유관순', 28), {'name': 0, 'age': 1})
- 출력 결과
구글 클라우드 Guide 사이트 바로가기
pymysql
- Bigquery는 qeury 제한이 있어 대량의 데이터를 한꺼번에 업로드하기 어렵고, 속도에도 제한이 많음
- 오프라인 database 서버를 두고 이용하는 방법도 추가
- python file 바로가기
- 필요한 Library
- pymysql(전체적인 SQL 이용)
- pandas(데이터베이스로 쓰기 위한 csv데이터 load)
- 순서
- localhost server 접속
- table 생성
- csv data load
- 생성한 table에 data insert
- insert한 database check
- 필요한 Library
January 17, 2020 에 작성
Tags:
python