윈도우의 경우, MySQL이 설치된 경로는 아마도 다음과 같을 것입니다.
C:Program Files/MySQL/MySQL Server 8.0/bin
따라서 윈도우 터미널에서 위의 디렉토리로 이동해야 합니다. 이후에는 아래와 같이 MySQL을 실행하고 임의의 데이터베이스와 유저를 생성해줍니다. IDENTIFIED BY 뒤에는 패스워드를 입력하면 됩니다.
./mysql -u root -p
CREATE DATABASE crawl_data DEFAULT CHARACTER SET utf8;
CREATE USER crawl_user IDENTIFIED BY '****';
GRANT ALL ON crawl_data.* TO crawl_user;
위에서 만든 데이터베이스에 테이블을 추가해봅시다. 아래와 같이 터미널에 명령어를 입력해주면 테이블이 생성되며, 저는 이미지 데이터를 BLOB 타입이 아닌 파일 타입으로 만들었습니다. 장고에서 ImageField()를 사용하면 파일로 처리할 수 있기 때문에 이미지가 저장된 경로만 입력하면 되거든요. (주의!!) 아래 `` 표시를 잘 보시기 바랍니다. 작은 따옴표가 아닌 키보드 숫자 1 왼쪽에 있는 특수 문자입니다.
use crawl_data; # crawl_data 데이터베이스 사용
create table `crawl_table`(
`num` int(11) NOT NULL,
`title` char(20) NOT NULL,
`url` char(255) NOT NULL,
`image` char(50) NOT NULL,
`date` datetime() NOT NULL,
PRIMIARY KEY (`num`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;
데이터베이스, 테이블이 잘 만들어졌는지 보려면 아래의 명령어로 확인하면 됩니다.
show databases;
show tables;
desc 'crawl_table'; # 테이블 필드 설정 확인
테이블에 필드를 추가하기 위해선 새로 추가할 필드명과 타입만 정해주면 됩니다. 아래 명령어를 확인하시면 "date"라는 필드명의 타입은 "datetime"이며 "img" 필드 뒤에 추가할 것임을 알 수 있습니다. 기존 필드명을 입력하지 않으면 디폴트로 마지막 필드 뒤에 추가됩니다.
alert table <테이블명> add <필드명> <필드 타입> after <기존 필드명>;
alert table crawl_table add date datetime after img;
마음에 들지 않는 필드 역시 삭제할 수 있습니다.
alter table crawl_table drop date;
필드를 삭제하는 대신 수정도 할 수 있습니다. 기존 필드명과 수정할 필드명을 차례로 입력하면 됩니다.
alter table <테이블명> change <기존 필드명> <수정 필드명> <필드 타입>
alter table crawl_table change date written_at datetime;
아래는 파이썬을 통해 MySQL과 연결하고 쿼리를 던지는 코드 예시입니다. cursor()을 통해 SQL 쿼리문을 그대로 동작시킬 수 있습니다.
import MySQLdb
# MySQL과 연결
conn = MySQLdb.connect(
user="crawl_user",
passwd="****",
host="localhost",
db="crawl_data",
charset="utf8"
)
#print(type(conn))
# MySQL에 명령어를 전달해주는 커서
cursor = conn.cursor()
#print(type(cursor))
"""
크롤링 코드 생략
"""
items = [item for item in zip(title_list, url_list, date_list)]
for item in items:
cursor.execute("""INSERT INTO news(title, url, date) VALUES('""" + item[0] + """', '""" + item[1] + """', '""" + item[2] + """')""")
# 커서 내용을 db에 커밋
conn.commit()
# 연결 종료
conn.colse()
위에서 MySQLdb 모듈을 임포트하는데 오류가 난다면 mysqlclient를 먼저 설치하셔야 합니다.
pip install mysqlclient
'문돌이 존버 > DB 및 SQL 스터디' 카테고리의 다른 글
Postgresql function, as keyword, typecasting 사용하기 (0) | 2021.02.09 |
---|---|
Neo4j import csv & create node (0) | 2021.02.07 |
Neo4j 그래프 DB 개념 및 cyper 쿼리 예제 (0) | 2021.02.07 |
Postgresql 테이블 Join, Group by 사용법 (0) | 2021.02.04 |
Postgresql 기본키 auto_increment 및 테이블 수정 (0) | 2021.02.04 |