[2024.5.2] SQL_문제풀이1

하은·2024년 5월 2일
0
post-custom-banner

문제 1. AWS RDS (MySQL) 에 프로젝트 관련 Database 를 생성하고, 접근 가능한 사용자 계정을 생성하세요.

  • Database Name : oneday
  • User Name / Password : oneday / 1234

제출 1.

  • Database 생성문 조회 결과 : SHOW CREATE DATABASE oneday;
  • 사용자 권한 확인 결과 : SHOW GRANT FOR ‘oneday’@‘%’
# oneday 라는 이름의 DATABASE 만들기 #한글과 이모티콘 포함
CREATE DATABASE oneday DEFAULT CHARACTER SET utf8mb4;

# oneday라는 이름의 유저 만들기 # % = 외부에서 접근한다는 뜻
CREATE USER 'oneday'@'%' identified by '1234';

# 접근 가능 권한 부여
GRANT ALL ON oneday.* to 'oneday'@'%';

# 확인
SHOW GRANTS FOR 'oneday'@'%';

문제 2. 스타벅스 이디야 데이터를 저장할 테이블을 다음의 구조로 생성하세요.

# DATABASE 사용
use oneday;

# TABLE 생성 1
CREATE TABLE COFFEE_BRAND
    -> (
    ->  id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ->  name varchar(10)
    -> )
    -> ;
    
# 확인
DESC COFFEE_BRAND;

mysql> DESC COFFEE_BRAND;
+-------+-------------+------+-----+---------+----------------+
| Field | Type        | Null | Key | Default | Extra          |
+-------+-------------+------+-----+---------+----------------+
| id    | int         | NO   | PRI | NULL    | auto_increment |
| name  | varchar(10) | YES  |     | NULL    |                |
+-------+-------------+------+-----+---------+----------------+


# TABLE 생성 2
# 위도경도 양식 참고
 CREATE TABLE COFFEE_STORE
    -> (
    ->  id int NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ->  brand int NOT NULL,
    ->  name varchar(32) NOT NULL,
    ->  gu_name varchar(5) NOT NULL,
    ->  address varchar(128) NOT NULL,
    ->  lat decimal(16,14) NOT NULL,
    ->  lng decimal(17,14) NOT NULL,
    ->  FOREIGN KEY (brand) REFERENCES COFFEE_BRAND(id)
    -> );

# 확인
DESC COFFEE_STORE;
+---------+----------------+------+-----+---------+----------------+
| Field   | Type           | Null | Key | Default | Extra
 |
+---------+----------------+------+-----+---------+----------------+
| id      | int            | NO   | PRI | NULL    | auto_increment |
| brand   | int            | NO   | MUL | NULL    |
 |
| name    | varchar(32)    | NO   |     | NULL    |
 |
| gu_name | varchar(5)     | NO   |     | NULL    |
 |
| address | varchar(128)   | NO   |     | NULL    |
 |
| lat     | decimal(16,14) | NO   |     | NULL    |
 |
| lng     | decimal(17,14) | NO   |     | NULL    |
 |
+---------+----------------+------+-----+---------+----------------+

문제 3. Python 코드로 COFFEE_BRAND 데이터를 다음과 같이 입력하고 확인하세요.

제출 2.

  • Table 생성 결과 : Desc COFFEE_BRAND; Desc COFFEE_STORE;
    제출 3.
  • COFFEE_BRAND 조회 결과 : SELECT * FROM COFFEE_BRAND;
# VSCode에서 진행
import mysql.connector

conn = mysql.connector.connect(
    host= 'localhost',
    user= 'oneday', 
    password= '1234',
    database= 'oneday'
    
    
#select 할거기 때문에 buffer 줌
cursor = conn.cursor(buffered=True) 


#제대로 됐는지 데이터 가져와서 확인
cursor.execute('DESC COFFEE_BRAND')
result = cursor.fetchall()

for row in result:
    print(row)


# 확인
('id', 'int', 'NO', 'PRI', None, 'auto_increment')
('name', 'varchar(10)', 'YES', '', None, '')
)


# 미션수행
cursor.execute("INSERT INTO COFFEE_BRAND (name) VALUES ('STARBUCKS'), ('EDIYA')")


# select 로 확인
cursor.execute('SELECT * FROM COFFEE_BRAND')
result = cursor.fetchall()

for row in result:
    print(row)
    

# 결과
(1, 'STARBUCKS')
(2, 'EDIYA')

문제 4. 스타벅스 페이지에 접근하는 코드에서 팝업창이 없는 경우, 팝업창을 닫는 코드에서 에러가 발생합니다. 예외처리 해서 에러
메시지를 출력하고 실행이 중단되지 않도록 수정해주세요.

# 기존
# driver.find_element_by_css_selector('.holiday_notice_close a').click()


# 팝업창 닫기 오류코드 수정

from selenium.common.exceptions import NoSuchElementException

try: #팝업이 있는 경우
    driver.find_element_by_css_selector('.holiday_notice_close a').click()

#없는 경우
except NoSuchElementException as e:
    print(e)
post-custom-banner

0개의 댓글