*mysql 이 무엇인지? DB, 테이블, 컬럼
mysql을 알아보기 전 미리 알아야 하는 게 있다.
*데이터베이스(DB):특정 기업이나 조직 또는 개인이 필요에 의해 논리적으로 연관된 데이터를 모아 일정한 형태로 저장해 놓은 것
-->쉽게 말해 데이터(회원정보, 게시판 글 ,사진)들이 모여있는 곳을 데이터베이스(데베)라 부른다
*DBMS(data base management service):데이터베이스 관리 프로그램
특징
-통합된 데이터(공용)
-저장된 데이터
-운영 데이터(업무 목적으로)
-공용데이터(한 사람 한 업무를 위해 사용x)
엑셀과 다른 점
-엑셀은 같이 수정이 안됨=동시에 작업이 안된다
-엑셀은 사이즈의 한계가 있다.
DBMS의 장점
-중복 최소화
-공용
-일관성
-무결성
-보안
-표준화
-전체 데이터 요구 조정
종류
*관계형 데이터베이스-(ex:myspl)
데이터 항목 간에 사전 정의된 관계가 있을 때 데이터 항목들의 모음을 가리킨다. 이 항목들은 열과 행으로 이루어진 "테이블 집합"으로 구성됨.
*즉 mysql이란?
mysql은 데이터를 저장하고 관리하는데 널리 사용되는 오픈 소스 관계형 데이터베이스 관리시스템이다.
*비관계형 데이터베이스-(ex.mongo db)
유연한 스키마를 갖추고 있는데 데이터 볼륨, 짧은 지연 시간과 "유연한 데이터 모델":이 필요한 애플리케이션에 최적화 되어 있다.
관계형 데이터베이스의 특징
-2차원 테이블로 표현(가로x세로=테이블)
-데이터 무결성
-SQL사용
-한번에 레코드 처리가 아닌 집합을 처리함
*테이블
-실질적으로 자료가 저장되는 곳
-행과 컬럼으로 구성
-특정한 목적과 성격에 의해 생성되는 집합체(ex.고객테이블, 주문테이블)
-사용자의 접근이 가능한 모든 데이터 보유
*행=레코드=튜플
일련의 관련 자료를 나타낸다
*컬럼=항목
해당하는 데이터들의 속성=구조를 나타낸다
*필드
정보의 한 조각으로, 처리의 최소 단위가 되는 것
기본키/외부키(private key/foreign key)
-기본키:유일하게 번호값 구분할 수 있게 주는 값
-외부키:테이블의 연결을 시켜주는 키(참조하는 테이블의 기본키)
*SQL:데이터베이스와 대화하기 위해 디자인된 언어
-관계형 데이터베이스에서 데이터 조작과 데이터 정의를 하기 위해 사용하는 언어
-입력 조회 수정 삭제 하기 위해서 SQL사용
-데이터베이스 쿼리는 데이터베이스에서 데이터를 추출하여 읽을 수있는 형식으로 형식을 지정함.
-쿼리는 데이터베이스에 필요한 언어, 즉 일반적으로 해당 언어 SQL.
특징
-쉽다
-절차적인게 아닌 선억적 언어
-DBMS 종류 얽매이지 않고 사용 가능
작업종류
-데이터 조회
-테이블 행 삽입 갱신 및 삭제
-객체 생성, 변경 및 삭제
-엑세스 제어
-무결성 보장
*select, insert, delete, update 쿼리문에 대해서 이해해보기
-select-데이터 조회
select 컬럼명 from 테이블명
-insert-새 행 입력(ex.새로운 고객 정보를 집어 넣을 때)
insert into 테이블명(칼럼명1,칼럼명2) values(값1,값2)
-delete-행 제거(ex.데이터 지울 때)
delete from 테이블명
-update-기존 행 변경(ex.기존 사원의 주소가 바뀌었을 때)
update 테이블명 set칼럼명=변경할 값
*where 조건문이 무엇인지
-where 조건
oerder by 컬럼명 asc or desc
-selct column1 from table where 조건문 order by column2 asc or desc;
-column1 대신 *을 넣으면 컬럼 전체
--------------------------------------------------------------------------------------------------------------------------------------------
*테이블 생성 - 랭크를 저장하기 위해 테이블 생성 ( rank 테이블)
https://pinetreeday.tistory.com/145
위의 블로그 참고하여 테이블 생성(결과물은 제일 밑에 있다)
*파이썬에서 mysql 모듈을 설치하고 연결진행& 파이썬에서 가지고 온 데이터 내용을 테이블에 insert를 해본다.
pymysql 모듈을 설치해주고 가져온다
import pymysql
mysql과 연결 시켜주고(연결에 필요한 데이터를 넣어준)
conn은 데이터베이스에 연결할 때 사용되는 객체
# MySQL 연결 설정
conn = pymysql.connect(host="localhost", user="root", password="-----", db="rs", charset="utf8")
커서 객체를 생성해준다
cursor: 데이터베이스에서 데이터를 쿼리하고 조작하게 도와주는 것
cursor = conn.cursor()
전글에서 크롤링한 데이터를 가져와 data리스트에 넣어준다.
data = requests.get('https://sports.news.naver.com/wfootball/index')
soup = BeautifulSoup(data.text, 'html.parser')
soccer_rank = soup.select('#_team_rank_epl > table > tbody > tr')
# 데이터를 담을 리스트 초기화
data = []
for tr in soccer_rank:
span = tr.select_one("td > div > div.info > span")
if span:
print(span.text)
data.append(span.text)
else:
print("Span not found")
앞에서 배운 insert쿼리문으로 데이터베이스에 data의 자료들을 넣어준다.
# 데이터 삽입 쿼리
insert_query ="""
INSERT INTO rs.rs
(name)
VALUES
(%s)"""
# 데이터 삽입
cursor.executemany(insert_query, data)
conn.commit()
마무리로 커서와 conn을 종료시켜준다
# 연결 종료
cursor.close()
conn.close()
전체
import requests
import pymysql
from bs4 import BeautifulSoup
# MySQL 연결 설정
conn = pymysql.connect(host="localhost", user="root", password="----", db="rs", charset="utf8")
#MySQL 데이터베이스 연결 객체 conn을 사용하여 커서 객체를 생성하는 코드입니다.
#커서는 SQL 쿼리를 실행하고 결과를 가져오는 데 사용되는 객체입니다. 커서를 사용하여 데이터베이스에서 데이터를 쿼리하고 조작할 수 있습니다.
cursor = conn.cursor()
data = requests.get('https://sports.news.naver.com/wfootball/index')
soup = BeautifulSoup(data.text, 'html.parser')
soccer_rank = soup.select('#_team_rank_epl > table > tbody > tr')
# 데이터를 담을 리스트 초기화
data = []
for tr in soccer_rank:
span = tr.select_one("td > div > div.info > span")
if span:
print(span.text)
data.append(span.text)
else:
print("Span not found")
# _team_rank_epl > table > tbody > tr:nth-child(2) > td:nth-child(2) > div > div.info > span
# 데이터 삽입 쿼리
insert_query ="""
INSERT INTO rs.rs
(name)
VALUES
(%s)"""
# 데이터 삽입
cursor.executemany(insert_query, data)
conn.commit()
# 연결 종료
cursor.close()
conn.close()
결과