파이썬과 MySQL을 연동하는 방법.
1. MySQL에 접속을 위한 유저를 하나 만든다.
여기서 admin계정은 사용하지 않고 특정 DB에서만 접속할 수 있는 계정을 만듦.
#my_test 데이터베이스에만 접속이 가능한 유저 생성
create user 'node_user' @ '%' identified by 'node1234test';
# my_test DB를 관리할 권한 설정
grant all on my_test.*to'node_user' @ '%'
2. 이용순서
1) install MySQL connector module
pip install mysql-connector-python
2) import mysql.connector (VScode 사용)
3) use the connect() method
4) use the consor() method
5) use the execute() method
6) Extract result using fatchall()
cursor.fetchall() or fatchone() or fatch many
-- 상황에 맞게 사용
7) close cursor and connection objects
cursor.close() and connection.close()
커넥션 코드 샘플
try:
#1. 커넥터로부터 커넥션을 받는다.
connection = mysql.connector.connect(
host = 'database-1.cqduiaqdroex.us-east-2.rds.amazonaws.com',
database = 'yhdb',
user = 'streamlit',
password = 'yh1234'
)
if connection.is_connected() :
print('연결될때')
db_info = connection.get_server_info()
print('MySQL server virsion : ', db_info)
#2. 커서를 가져온다
cursor = connection.cursor()
#3. 우리가 원하는거 실행 가능
cursor.execute('select database();')
# 여기에 insert select 업데이트 등을 함.
#4. 실행 후 커서에서 결과를 빼냄
record = cursor.fetchone()
print('Connected to db : ', record)
except Error as e:
print('디비 관련 에러 발생',e)
finally :
#5. 모든 데이터 베이스 실행 명령을 끝냈으면 커서와 커넥션을 모두 닫아줌.
cursor.close()
connection.close()
print('MySQL 커넥션 종료')
Insert row into MySQL from Python
- SQL문 작성
insert into mysql_table(컬럼1, 컬럼2..) values(value1, value2) - Connection으로 부터 cursor가져오기
connection.cursor() - 쿼리실행
cursor.execute() - 커밋 실행하여 인서트 반영
commit() - 몇개의 행이 적용되었는지 확인
cursor.rowcount
변수로 처리하는 방법 - 샘플코드
cursor = connection.cursor()
query - """insert into laptop(id, name, price, purchase_date)
values(%s, %s, %s, %s)"""
*record = (id, name, price, purchase_date)
cursor.execute(query, record)
connection.commit()
여러행 넣기
* record = [(id, name, price, purchase_date),(id, name, price, purchase_date),(id, name, price, purchase_date)]
리스트로 넣는다.
MySQL 데이터 파이썬으로 추출하기
import streamlit as st
import mysql.connector
from mysql.connector import Error
from datetime import datetime, date, time
def main():
if st. button('저장'):
try:
#1. 커넥터로부터 커넥션을 받는다.
connection = mysql.connector.connect(
host = 'database-1.cqduiaqdroex.us-east-2.rds.amazonaws.com',
database = 'yhdb',
user = 'streamlit',
password = 'yh1234'
)
if connection.is_connected() :
print('연결될떄')
db_info = connection.get_server_info()
print('MySQL server virsion : ', db_info)
#2. 커서를 가져온다
cursor = connection.cursor()
#3. 우리가 원하는거 실행 가능
query = '''
select * from books;
'''
cursor.execute(query)
# connection.commit() # 셀렉트에는 커밋이 없다.
record = cursor.fetchall()
for data in record:
print(data)
except Error as e:
print('디비 관련 에러 발생',e)
finally :
#5. 모든 데이터 베이스 실행 명령을 끝냈으면 커서와 커넥션을 모두 닫아줌.
cursor.close()
connection.close()
print('MySQL 커넥션 종료')
if __name__ == '__main__':
print(__name__)
main()
'MySQL' 카테고리의 다른 글
데이터 베이스의 본질 (0) | 2021.03.30 |
---|---|
MySQL - join (+ case 조건문) (0) | 2021.03.17 |
MySQL 기본문법 (0) | 2021.03.16 |
Workbench 를 통해, AWS RDS에 접속환경 설정하는 방법 (0) | 2021.03.16 |