-
Notifications
You must be signed in to change notification settings - Fork 7
데이터베이스 이야기
Jisoo edited this page Feb 8, 2023
·
12 revisions
데이터베이스 설정
-
https://dev.mysql.com/downloads/windows/installer/ 으로 이동하여서 mysql-installer-community-8.0.31.0.msi 파일을 다운받고 설치합니다. 이 방법은 64bit Windows 10 (or 11)에서 지원되는 방법입니다.
-
MySQL 서버에 접속하기 위한 프로그램인 MySQL Workbench를 설치 과정에서 같이 설치하게 되면 보다 쉽게 db를 관리할 수 있습니다. 포트 번호는 기본 설정값인 3306을 유지하며, 설치 과정에서 설정했던 password는 반드시 기억해야 합니다. (편의상 1234로 통일하는 것도 좋습니다)
-
Local instance MySQL을 클릭하고, password를 입력하고 접속하면 됩니다.
MySQL 테스트
다음 코드 블록을 이용하여 로컬의 포트 3306을 통해 MySQL 데이터베이스에 접근할 수 있습니다. 데이터베이스 생성, 데이터베이스 선택, 테이블 생성, 삽입, 선택, 수정 등의 명령은 해당하는 SQL 구문을 입력하여서 처리할 수 있습니다.
python에서 MySQL에 접근하기 위해서는, pymysql 라이브러리가 필요합니다.
# import library
import pymysql
# connect to db and make cursor
conn = pymysql.connect(host='127.0.0.1', user='root', password='1234', port=3306, charset='utf8')
cur = conn.cursor()
# sql queries
create_db = "CREATE DATABASE IF NOT EXISTS project_db;"
use_db = "USE project_db;"
create_table = "CREATE TABLE IF NOT EXISTS member_tmp\
(user_id CHAR(100) NOT NULL PRIMARY KEY);"
insert_data = "INSERT INTO member_tmp VALUES\
('유영서'),\
('Boost Camp AI Tech 4th'),\
('asdfasdfadsfasdfasdfasdfa'),\
('_123dafdEAFDF@#$%;'),\
('/;\/;\/;\/;\/;\/;\');"
select_data = "SELECT * FROM member_tmp;"
# excute
cur.execute(create_db)
cur.execute(use_db)
cur.execute(create_table)
cur.execute(insert_data)
cur.execute(select_data)
conn.commit() # save execution
conn.close() # close db connection
# print selected data from database
data = cur.fetchall() # fetchone(), fetchmany(size: int)
for id in data:
print(f"Member id: {id[0]}")
ERD
MySQL csv 넣기
## 실행 방법
LOAD DATA LOCAL INFILE "FILE_PATH" INTO TABLE DBNAME.TABLE_NAME FIELDS TERMINATED BY ",";
ERROR 3948 (42000): Loading local data is disabled; this must be enabled on both the client and server sides
mysql> show global variables like 'local_infile';
mysql> set global local_infile=true;
이걸 입력하면 OFF 가 ON으로 바뀐다.
ON으로 바뀐 것을 확인 했으면 exit한 후 다시 접속해준다.
그 후 실행 방법처럼 다시한번 시도하면 된다.