본문 바로가기

카테고리 없음

[MySQL] Python with MySQL

 

이 글은 24.01.24에 본인 벨로그에 작성했던 글을 옮겨 온 것이다.

 

Python with MySQL

 

fetchone() // fetchall()

  • 쿼리 실행 결과가 행(row)를 포함할 경우(예를 들어 쿼리가 select문인 경우), 해당 데이터(행, row)를 저장하고 읽어올 수 있도록 하는 함수.
    fetchone()은 한 줄씩, fetchall()은 모든 줄을 읽거나 저장할 수 있음.

    위 테이블의 데이터를(행/row를) fetchone()으로 한 줄씩 읽어와보자.
# AWS RDS 연결
remote = mysql.connector.connect(
    host = endpoint 주소,
    port = 포트 넘버,
    user = 'username',
    database = 'dbname',
    password = 'password'
)

cur = remote.cursor()	# 커서 생성
cur.execute('select * from sql_file;')  # select문 실행. 

result = cur.fetchone()     # select문의 결과 중 맨 위 행 하나를 result에 담음
print(result)               # 한 번 시행하면, 맨 위의 행을 담음. 2번 시행하면 그 다음 행을, 3번 시행하면 그 다음 행을 담음.
                            # 즉 result는 시행할 때마다 매번 달라짐. 이것이 fetchone()의 동작 원리.

remote.close()	# 연결 해제

1번 실행

2번 실행


3번 실행


4번 실행


5번 실행(sql_file 테이블의 데이터는 4행 뿐이므로, 5번 이상의 시행부터는 None을 출력함)

조회할 행이 많다면, 이 얼마나 번거로운가! 이럴 때 쓰는 것이,
fetchall()이다. 한 번에 데이터를 불러올 수 있다.
아래와 같이 모든 행이 list형태로 출력된다. 한 줄씩 출력하고 싶다면 반복문을 사용하자.
(불러올 데이터가 많을 때엔 fetchall()에 buffered=True 옵션을 주자)

물론, 연결을 해제했다고 해서 result에 담긴 결과가 사라지는 것은 당연히 아니다.
그러므로 불러 온 데이터를 우리는 이리저리 활용해볼 수 있다.
예를 들어 아래와 같이 DataFrame을 만든다던가?

 

CSV file 다루기

sql로 csv파일도 다뤄보자. 아래의 데이터를 사용 할 것이다.


과정은 크게 다르지 않다.
sql에 연결 -> 커서 생성 -> 쿼리문 작성 후 실행 -> 잘 실행되었는지 확인 후 연결 해제

1. sql에 연결




2. 커서 생성(데이터가 클 지도 모르니 buffered 옵션 추가)




3. sql문 작성 후 실행




4. 확인 후 연결 해제.


물론 터미널로도 확인해볼 수 있다.





PK / FK

PK(기본키Primary Key)

  • 테이블의 각 레코드를 식별하는 역할을 한다.
  • 식별해야 하기 때문에, 중복되지 않는 고유값을 가진다.
  • 따라서 Null값을 가질 수 없다
  • 테이블 당 하나의 PK를 갖는다. 컬럼 하나를 PK로 지정할 수도, 여러개를 PK로 지정할 수도 있다.

PK 생성하기.

  1. 여러 개의 컬럼을 PK로 지정하는 경우(CONSTRAINT 줄은 생략 가능)

CREATE TABLE tablename(
       col1 datatype NOT NULL,
       col2 datatype NOT NULL,
               ......
       CONSTRAINT constraint_name,
           PRIMARY KEY(col1, col2, ...)
);



  1. 하나의 컬럼을 PK로 지정하는 경우

방법 1.
CREATE TABLE tablename(
       col1 datatype NOT NULL,
       col2 datatype NOT NULL,
       ......
       PRIMARY KEY (col1)
);

방법 2.
CREATE TABLE tablename(
       col1 datatype NOT NULL PRIMARY KEY,
       col2 datatype NOT NULL,
       ......
);



- PK 삭제하기

ALTER TABLE tablename
       DROP PRIMARY KEY;



PK 추가하기

ALTER TABLE tablename
       ADD PRIMARY KEY(col1, col2, ...);



FK(외래 키Foreign Key)

  • 한 테이블과 다른 테이블을 연결해주는 역할.
  • 다른 테이블의 기본 키를 해당 테이블의 외래 키로 지정.