반응형

소스가 csv이거나 python 코딩을 하다가 dataframe 데이터가 산출될 때 이것을 테이블로 만들고 싶은 경우가 있을 수 있다.

처음에 pymysql로 db 객체 만들어서 conn에 넣어주는데 계속 컬럼 개수가 안맞다는 둥 에러가 났다. 구글 검색해보니 친절하신 분께서 답을 내주셔서 쉽게 진행할 수 있었다.

# pip install pymysql
# pip install sqlalchemy
import pymysql
from sqlalchemy import create_engine

# MySQL Connector using pymysql
pymysql.install_as_MySQLdb()
import MySQLdb

# {} 안에 해당하는 정보 넣기. {}는 지우기.
engine = create_engine("mysql+mysqldb://{User}:{Password}@{Host}:3306/{Database}}", encoding='utf-8')
conn = engine.connect()

# MySQL에 저장하기
# 변수명은 이전에 만든 데이터프레임 변수명
# name은 생성할 테이블명
# index=False, 인덱스 제외
match_info.to_sql(name='pcs3as_matches_info', con=engine, if_exists='append', index=False)

미리 테이블을 만들면 exist에러가 나니 주의하자. 자료형이나 기본키같은 옵션은 만들어진 테이블에서 업데이트 해야할 것 같다.

출처: https://velog.io/@haenyy3153/DataFrame-to-MySQL

반응형

'MySQL' 카테고리의 다른 글

MySQL 외부접속 허용하기  (0) 2022.09.12
Ubuntu MySQL 설치하기  (0) 2022.09.12
mysql connection pool  (0) 2021.08.31
MySQL 디비 커넥트 지속시키기  (0) 2021.07.13
반응형

개요

Mysql을 처음 설치한 후 아무 설정없이 사용할 경우 localhost로만 접속이 가능하다. 따라서 MySQL 외부접속 허용 설정과 외부 접속이 가능한 계정을 만들어서 외부에서 접속해본다.

1. my.cnf 파일 찾기

sudo find / -name "my.cnf"
나의 파일의 위치는 /etc/mysql/my.cnf 였다.

2. my.cnf 파일 읽기


위와 같은 내용이면 /etc/mysql/my.cnf 파일 내용이 위와 같다면 /etc/mysql/mysql.conf.d 에 위치한 mysqld.cnf 파일을 연다.

3. mysqld.cnf 파일 수정

bind-address 를 0.0.0.0으로 수정한다. 0.0.0.0은 any ip의 의미를 가진다.
# bind-address = 127.0.0.1
bind-address = 0.0.0.0

4. 변경 값 적용을 위한 서비스 재시작

service mysql restart

5. 외부 접속 가능한 계정 생성

5-1. mysql접속

sudo mysql

5-2. 계정 검색

use mysql;
select host, user from user;

호스트가 localhost 뿐이다.

5-3. 계정 추가

5-4. 계정 권한 추가

모든 DB와 Table에 권한을 준다.

grant all privileges on *.* to 'root'@'%';

권한 설정을 적용한다.
flush privileges;

반응형

'MySQL' 카테고리의 다른 글

Dataframe MySQL에 Import 하기  (0) 2022.09.14
Ubuntu MySQL 설치하기  (0) 2022.09.12
mysql connection pool  (0) 2021.08.31
MySQL 디비 커넥트 지속시키기  (0) 2021.07.13
반응형

1. 업데이트

sudo apt-get update

2. mysql-server 설치

sudo apt-get install mysql-server

3. 방화벽 허용

sudo ufw allow mysql

4. mysql 실행

sudo systemctl start mysql

5. 자동 재시작 적용

sudo systemctl enable mysql

6. mysql 접속

sudo mysql -u root -p

반응형

'MySQL' 카테고리의 다른 글

Dataframe MySQL에 Import 하기  (0) 2022.09.14
MySQL 외부접속 허용하기  (0) 2022.09.12
mysql connection pool  (0) 2021.08.31
MySQL 디비 커넥트 지속시키기  (0) 2021.07.13
반응형

서버 개발을 하다보니 다수의 유저가 한꺼번에 디비에 접속할 경우 커서 한개로는 모자라는 경우가 있다.

이와 같은 상황에선 cursor를 lost하는 오류를 발생하게 된다. 해결 방법으론 connection pool이 있다.

connection pool은 메소드 별로 커서를 이니셜라이징해서 커서의 독립성을 보장해준다.

하는 방법은 다음과 같다.

pool = Pool(host=config.HOST, user=config.DB_USER, password=config.PW, max_size, ping_check=True)
pool.init()

커넥트하는 코드는 위와 같고 커넥트 후 이니셜라이즈까지 해준다.

사용하기 위해 나는 아래와 같은 커스텀 이니셜라이즈 메소드를 만들었다..

def pool_init():
    conn = None
    cursor = None
    try:
        conn = pool.get_conn()
        conn.ping(reconnect=True)
        cursor = conn.cursor()
        cursor.execute('use ' + confing.DB_NAME)
        conn.commit()
    except Exception as E:
        psss
반응형

'MySQL' 카테고리의 다른 글

Dataframe MySQL에 Import 하기  (0) 2022.09.14
MySQL 외부접속 허용하기  (0) 2022.09.12
Ubuntu MySQL 설치하기  (0) 2022.09.12
MySQL 디비 커넥트 지속시키기  (0) 2021.07.13
반응형

제목이 다소 이상한데 무슨말이냐면 MySQL 디비에 연결 및 접속하고 아무 처리(쿼리)도 안하고 가만히 있으면 연결이 끊기게 된다

이 현상을 해결하려면 conn = pymysql.connect ~~~~ 로 설정하고

 

conn.ping(reconnect=True)

 

를 해주면 된다.

반응형

'MySQL' 카테고리의 다른 글

Dataframe MySQL에 Import 하기  (0) 2022.09.14
MySQL 외부접속 허용하기  (0) 2022.09.12
Ubuntu MySQL 설치하기  (0) 2022.09.12
mysql connection pool  (0) 2021.08.31

+ Recent posts