Python with MYSQL
- Python으로 MYSQL 접속 후 사용하는 방법
- MYSQL에 접속하기 위한 코드
mydb = mysql.connector.connect(
host = '<hostname>',
user = '<username>',
password = '<password>'
)
mydb = mysql.connector.connect(
host = '<hostname>',
user = '<username>',
password = '<password>',
database = '<databasename>'
)
mydb.close()
mydb = mysql.connector.connect(
host = '<hostname>',
port = <port>,
user = '<username>',
password = '<password>',
database = '<databasename>'
)
- 쿼리를 실행하기 위한 코드(읽어올 데이터 양이 많은 경우 cursor 생성시 buffered=True 설정-> cursor(buffered=True))
mydb = mysql.connector.connect(
host = '<hostname>',
user = '<username>',
password = '<password>',
database = '<databasename>'
)
mycursor = mydb.cursor()
mycursor.execute(<query>)
mydb = mysql.connector.connect(
host = '<hostname>',
user = '<username>',
password = '<password>',
database = '<databasename>'
)
mycursor = mydb.cursor()
sql = open('<filename>.sql').read()
mycursor.execute(sql)
- SQL File 내에 쿼리가 여러 개 존재하는 경우의 코드
mydb = mysql.connector.connect(
host = '<hostname>',
user = '<username>',
password = '<password>',
database = '<databasename>'
)
mycursor = mydb.cursor()
sql = open('<filename>.sql').read()
mycursor.execute(sql, multi=True)
- fetchall(): select 명령 등의 결과값을 가져오기
mycursor.execute(<query>)
result = mycursor.fetchall()
for data in result:
print(data)
Primary Key
- 테이블의 각 레코드를 식별
- 중복되지 않은 고유값을 포함
- Null 값을 포함할 수 없음
- 테이블 당 하나의 기본키를 가짐
- Primary Key 생성 문법 1 (CONSTRAINT는 생략 가능)
CREATE TABLE tablename
(
column1 datatype NOT NULL,
column2 datatype NOT NULL,
....
CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ...)
);
예제

ALTER TABLE tablename DROP PRIMARY KEY;
예제

ALTER TABLE tablename ADD PRIMARY KEY (column1, column2, ...);
예제

Foreign Key
- 한 테이블을 다른 테이블과 연결해주는 역할이며, 참조되는 테이블의 항목은 그 테이블의 기본키
- Foreign Key 생성 문법 1 (CONSTRAINT는 생략 가능)
CREATE TABLE tablename
(
column1 datatype NOT NULL,
column2 datatype NOT NULL,
column3 datatype,
column4 datatype
....
CONSTRAINT constraint_name PRIMARY KEY (column1, column2, ...),
CONSTRAINT constraint_name FOREIGN KEY (column3, column4, ...) REFERENCES REF_tablename(REF_column)
);
예제

- 자동 생성된 CONSTRAINT를 확인하는 방법
SHOW CREATE TABLE tablename;
ALTER TABLE tablename DROP FOREIGN KEY FK_constraint;
ALTER TABLE tablename ADD FOREIGN KEY (column) REFERENCES REF_tablename(REF_column);
Aggregate Functions(집계함수)
SELECT COUNT(column) FROM tablename WHERE condition;
예제

SELECT SUM(column) FROM tablename WHERE condition;
예제

SELECT AVG(column) FROM tablename WHERE condition;
예제

SELECT MIN(column) FROM tablename WHERE condition;
SELECT MAX(column) FROM tablename WHERE condition;
예제

- FIRST: 첫번째 결과값을 리턴해주는 함수
- LAST: 마지막 결과값을 리턴하는 함수
- GROUP BY: 그룹화하여 데이터를 조회
SELECT column1, column2 FROM tablename
WHERE condition
GROUP BY column1, column2, ...
ORDER BY column1, column2;
- HAVING: 조건에 집계함수가 포함되는 경우 WHERE 대신 HAVING 사용
SELECT column1, column2 FROM tablename
WHERE condition
GROUP BY column1, column2, ...
HAVING condition (Aggregate Functions)
ORDER BY column1, column2;